这是我的XML文件:
<Touren xmlns="urn:schemas-TOURDATA:SchemaExtension">
<Tour TourID="00" LastChange="00" LastChangeBy="00" Created="00" CreatedBy="00">
<OBJECT_TEXT_NAME xmlns="urn:schemas-TOURDATA:Tour">
<string xmlns="urn:TOURDATA:i18n" xml:lang="de-DE">TEXT GERMAN</string>
<string xmlns="urn:TOURDATA:i18n" xml:lang="en-GB">TEXT ENGLISH</string>
</OBJECT_TEXT_NAME>
这是我的XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:td1="urn:schemas-TOURDATA:SchemaExtension"
xmlns:td2="urn:schemas-TOURDATA:Tour">
<xsl:template match="/td1:Touren">
<xsl:apply-templates select="td1:Tour">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="td1:Tour">
<p><xsl:value-of select="td2:OBJECT_TEXT_BESCHREIBUNG">!!TEXT GERMAN HERE!!</xsl:value-of></p>
<p><xsl:value-of select="td2:OBJECT_TEXT_BESCHREIBUNG">!!TEXT ENGLISH HERE!!</xsl:value-of></p>
</xsl:template>
</xsl:stylesheet>
如何选择 de-DE 和 en-GB string
节点,以便使用xsl:value-of
输出它们?
答案 0 :(得分:1)
您解决string
元素并应用指定@xml:lang
属性值的谓词过滤器:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:td1="urn:schemas-TOURDATA:SchemaExtension"
xmlns:td2="urn:schemas-TOURDATA:Tour"
xmlns:td3="urn:TOURDATA:i18n">
<xsl:output indent="yes"/>
<xsl:template match="/td1:Touren">
<xsl:apply-templates select="td1:Tour">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="td1:Tour">
<p><xsl:value-of select="td2:OBJECT_TEXT_NAME/td3:string[@xml:lang='de-DE']"/></p>
<p><xsl:value-of select="td2:OBJECT_TEXT_NAME/td3:string[@xml:lang='en-GB']"/></p>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
您可以使用lang function:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:td1="urn:schemas-TOURDATA:SchemaExtension"
xmlns:td2="urn:schemas-TOURDATA:Tour"
xmlns:td3="urn:TOURDATA:i18n">
<xsl:output indent="yes"/>
<xsl:template match="/td1:Touren">
<xsl:apply-templates select="td1:Tour" />
</xsl:template>
<xsl:template match="td1:Tour">
<p><xsl:value-of select="td2:OBJECT_TEXT_NAME/td3:string[lang('de-DE')]"/></p>
<p><xsl:value-of select="td2:OBJECT_TEXT_NAME/td3:string[lang('en-GB')]"/></p>
</xsl:template>
</xsl:stylesheet>
这比explicitly comparing the xml:lang
attributes更有优势,xml:lang
属性只能在祖先元素中指定。