XSLT中的XML节点选择只会按节点()选择值

时间:2014-05-13 22:06:55

标签: xml xslt

我在XSLT中选择一些XML节点时遇到问题,并且不知道什么是错误的。

我的XML文件如下(shortend):

<?xml version="1.0" encoding="UTF-8"?>
<Invoice version="5.3.1" xmlns="http://isdoc.cz/namespace/invoice">
  <DocumentType>1</DocumentType>
  <ID>FV1755</ID>
  <UUID>375053CE-3B81-4C48-9492-C18503F1F203</UUID>
  <IssuingSystem>K2</IssuingSystem>
  <IssueDate>2014-03-31</IssueDate>
  <TaxPointDate>2014-03-31</TaxPointDate>
  ....
</Invoice>

我的XSLT文档如下。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:pie  = "http://isdoc.cz/namespace/invoice"
   xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
   exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/pie:Invoice">
    <Invoice>
      <Id>
        <xsl:value-of select ="ID"/>
      </Id>
    </Invoice>
  </xsl:template>
</xsl:stylesheet>

我的结果如下:

<?xml version="1.0" encoding="utf-8"?>
<Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pie="http://isdoc.cz/namespace/invoice">
  <Id></Id>
</Invoice>

这就是问题所在。为什么我不能选择<ID>值,它总是空的,无论我尝试什么。

我可以选择该值的唯一方法是将XSLT直接指向:

<xsl:value-of select ="node()[2]"/>

如何在XSLT中选择<ID>元素?

1 个答案:

答案 0 :(得分:1)

请记住指定ID的命名空间:

<xsl:value-of select ="pie:ID"/>