我對xsl和函數式編程相當陌生,所以我將不勝感激這個幫助:
我有一個模板可以轉換一些xml並提供輸出。問題在於類型的許多元素xs:日期,都在不同的上下文中,必須進行本地化。我使用這些xs:日期的子串的連接來產生一個本地化的日期模式字符串。
正如你所猜測的,這會導致很多複製粘貼「substring-this and substring-that」。我該如何編寫一個能夠自動將類型爲xs:date的所有元素轉換爲保存所有上下文感知轉換的本地化字符串的模板?
我的XSL是這樣的:XSLT - 如何將模板應用於該類型的每個節點?
<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列表中看到一個示例。
P.S.我使用的是xsl 1.0。
這幾乎可以肯定是由利用一個模板在你的XSLT來實現匹配的屬性,但它確實有幫助,如果你表現出了(小)示例XML文檔,你的預期產出。謝謝! –
添加了一個xml示例。 – svz
請提供確切的想要的輸出。 –