xml - 如何使用 xslt 从 xml 文件中选择语言节点

标签 xml xslt

这是我的 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

最佳答案

您寻址 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>

关于xml - 如何使用 xslt 从 xml 文件中选择语言节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702891/

相关文章:

xslt - XSLT 1.0变体,用于不同的值

xml - 基于不同 XSLT 2.0 的枚举值

python - minidom python 上的 XML 缩进

java - MalformedByteSequenceException : Invalid byte 2 of 2-byte UTF-8 sequence

xml - 对标签参数进行 xslt 测试

java - 内存中具有外部函数 (functx) 的 XSLT

java - 使用 jaxb 处理带有可选内部标签和值的 xml

html - 在 xsl :text in roundrect tag in xslt 中使用变量

c# - Xml 反序列化和默认值

python - awk 双引号字段分隔符