不能从xml中选择具有xslt的元素

时间:2016-01-14 02:59:56

标签: xml xslt

我有一个特定的Xml

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Address">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Recipient" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

和一个简单的xslt文件。如果我尝试从名为“element”的标签中选择属性“name”的值,则输出为空。

<xsl:stylesheet version = '1.0'
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
    <xsl:template match="element">
        <xsl:value-of select="@name"/>
    </xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

XML中的

element位于绑定到xs前缀的名称空间中,因此match="element"找不到匹配项。您需要在XSLT中定义xs前缀(或任何前缀名称,只要它映射到正确的名称空间URI)并使用match="xs:element"

<xsl:stylesheet version = '1.0'
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
    <xsl:template match="xs:element">
        <xsl:value-of select="@name"/>
    </xsl:template>
</xsl:stylesheet>

<强> xsltransform.net demo