2

这是我的 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-DEen-GB string节点以使用 输出它们xsl:value-of

4

2 回答 2

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>
于 2013-05-23T00:43:45.420 回答
0

您可以使用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: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>

与显式比较xml:lang属性相比,这具有xml:lang只能在祖先元素中指定属性的优势。

于 2016-10-17T18:12:00.780 回答