私は xsl と関数型プログラミングにまったく慣れていないので、これについて助けていただければ幸いです
。いくつかの xml を変換して出力を提供するテンプレートがあります。問題は、タイプxs:dateの多くの要素があり、すべてが異なるコンテキストにあり、ローカライズする必要があることです。これらの xs:dates の部分文字列を連結して、ローカライズされた日付パターン文字列を生成します。
ご想像のとおり、これにより多くのコピー アンド ペースト " substring-this および substring-that " が発生します。タイプ xs:date のすべての要素をすべてのコンテキスト認識変換を保持するローカライズされた文字列に自動的に変換するテンプレートを作成するにはどうすればよいですか?
私のxslは次のようなものです:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
...
<input value="{substring(/select/a/date 9,2)}.{substring(/select/a/date, 6,2)}.{substring(/select/a/date 1,4)}">
...
<!-- assume that following examples are also with substrings -->
<div><xsl:value-of select="different-path/to_date"/></div>
...
<table>
<tr><td><xsl:value-of select="path/to/another/date"/></td></tr>
</table>
<apply-templates/>
</xsl:template>
<xsl:template match="something else">
<!-- more dates here -->
</xsl:template>
</xsl:stylesheet>
私は私の質問を明確にすることができたと思います=)
UPD: xml の例を次に示します。
<REQUEST>
<header>
<... />
<ref>
<ref_date type="xs:date">1970-01-01</ref_date>
</ref>
</header>
<general>
<.../>
<info>
<.../>
<date type="xs:date">1970-01-01</date>
<ExpireDate type="xs:date">1970-01-01</ExpireDate>
<RealDate type="xs:date">1970-01-01</RealDate>
<templateDetails>template details</templateDetails>
<effectiveDate type="xs:date">1970-01-01</effectiveDate>
</info>
<party>
<.../>
<date type="xs:date">1970-01-01</date>
</party>
<!-- many other parts of such kind -->
</general>
</REQUEST>
出力に関しては、さまざまなオプションがあります。主なことは、これらの値は、テーブル、入力フィールドなど、さまざまな html オブジェクトの値として設定する必要があるということです。xsl リストで例を確認できます。
PS私はxsl 1.0を使用しています。