XSLT不匹配节点

时间:2013-08-23 14:14:08

标签: xml xslt xslt-1.0

我是XSLT的新手,我遇到了一个非常简单的例子。

有人可以告诉我为什么这与“Claim”节点不匹配吗?

我认为这应该为每个Claim节点打印“Claim”这个词,但我尝试了几种变体。

XML

<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<ClaimDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.oopfactory.com/2011/XSL/Hipaa">
    <Claim Version="005010X222A1" Type="Professional" TransactionCode="000002866" PatientControlNumber="123456" TotalClaimChargeAmount="206.00" StatementFromDate="2013-08-13">
    </Claim>
</ClaimDocument>

XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="ClaimDocument">
    <xsl:for-each select="Claim">
      <xsl:text>Claim</xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

2 个答案:

答案 0 :(得分:3)

您需要与命名空间http://www.oopfactory.com/2011/XSL/Hipaa匹配。试试这个:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:hippa="http://www.oopfactory.com/2011/XSL/Hipaa">

    <xsl:template match="/hippa:ClaimDocument">
        <xsl:for-each select="hippa:Claim">
            <xsl:text>Claim</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

有两个错误。 1.缺少命名空间 2.模板匹配的初始/缺失