在XPATH中加载属性,问题

时间:2009-04-12 09:07:08

标签: xml xpath xslt

我有一个关于在XPATH中加载属性的问题。 我编写了简短的XML代码来测试:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="testDate.xsl"?>
<element attribute="1/1/2100">
  Hung
 </element>

我的XSL代码:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!--Handle the document: set up HTML page-->
  <xsl:template match="/">
    <html>
    <head>    
    </head>
    <body>
   This is a test   
     <xsl:value-of select="element@attribute"/>
    </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

为什么在加载样式表时会产生错误?你能帮我解释一下吗?谢谢

2 个答案:

答案 0 :(得分:3)

您需要在@中的<xsl:value-of />之前添加斜杠。

您收到错误,因为element@attribute无效XPath。将斜杠设置为表示您要:

  • 找到名为element的元素,然后找到
  • 在这些元素中,找到名为attribute的属性。

以下修改后的样式表适用于我:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!--Handle the document: set up HTML page-->
  <xsl:template match="/">
    <html>
    <head>    
    </head>
    <body>
                This is a test                  
        <xsl:value-of select="element/@attribute"/>
    </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:2)

我怀疑你的XPath属性是错误的。我认为应该是

element/@attribute

即。你应该用/

分隔element和@attribute