X-PATH / XSL PARSING

时间:2014-02-08 10:22:52

标签: xml xslt xml-namespaces

下面是输入XML。

     <ServiceIncident xmlns="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2">
          <Ticket>
            <UrgencyCode>3</UrgencyCode>
            <ImpactCode>2</ImpactCode>
          </Ticket>
     </ServiceIncident>

在上面的输入XML中,如果在根元素中使用XMLNS(即ServiceIncident),则元素位于http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2命名空间中。

我的输出中没有得到任何值。如果我删除输入XML中的xmlns名称空间声明,那么我可以在输出中获取值。

我需要在输入中使用xmlns。如何在输出中获取值?

1 个答案:

答案 0 :(得分:2)

您需要在XSLT中声明名称空间(带前缀),然后使用该前缀:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:r2="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">
      <n>
        <xsl:value-of select="r2:ServiceIncident/r2:Ticket/r2:UrgencyCode"/>
      </n>
    </xsl:template>
</xsl:stylesheet>

当您的样本运行上述XSLT时,结果为:

<n>2</n>