Xml XSLT如何获取特定的组节点
我有这个xml,我只想获取'responseMessage'及其所有内容。我下面的xsl不起作用。当我移除requestMessage节点旁边的名称空间时,我得到了所需的输出,但情况不应该是这样,因为总是期望requestNode必须具有名称空间 XML输入Xml XSLT如何获取特定的组节点,xml,xslt,Xml,Xslt,我有这个xml,我只想获取'responseMessage'及其所有内容。我下面的xsl不起作用。当我移除requestMessage节点旁边的名称空间时,我得到了所需的输出,但情况不应该是这样,因为总是期望requestNode必须具有名称空间 XML输入 <?xml version="1.0" ?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/&quo
<?xml version="1.0" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body >
<requestMessage xmlns="http://xmlns.oracle.com/OUMWM/Message">
<language>ENG</language>
<deviceFlag>M2ER</deviceFlag>
<badgeNumber>222</badgeNumber>
<responseMessage>
<response>
<ertResponse>
<verificationStatus>F</verificationStatus>
<errorCode>22601</errorCode>
<errorText>Badge Number 222 not found</errorText>
</ertResponse>
</response>
</responseMessage>
</requestMessage>
</soap:Body >
</soap:Envelope>
英格
M2ER
222
F
22601
找不到徽章号码222
XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="UTF-8" />
<!-- Pretty Print Output -->
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<!-- Remove namepsaces -->
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<!-- Construct response -->
<xsl:template match="/*">
<xsl:apply-templates select="//responseMessage"/>
</xsl:template>
</xsl:stylesheet>
期望输出:
<responseMessage>
<response>
<ertResponse>
<verificationStatus>F</verificationStatus>
<errorCode>22601</errorCode>
<errorText>Badge Number 222 not found</errorText>
</ertResponse>
</response>
</responseMessage>
F
22601
找不到徽章号码222
您应该声明名称空间“http://xmlns.oracle.com/OUMWM/Message“也就是说,像这样使用它:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:or="http://xmlns.oracle.com/OUMWM/Message"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="UTF-8" />
<!-- Pretty Print Output -->
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<!-- Remove namepsaces -->
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<!-- Construct response match on root-->
<xsl:template match="/">
<xsl:apply-templates select="*/*/or:requestMessage/or:responseMessage"/>
</xsl:template>
</xsl:stylesheet>
您应该声明名称空间“http://xmlns.oracle.com/OUMWM/Message“也就是说,像这样使用它:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:or="http://xmlns.oracle.com/OUMWM/Message"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="UTF-8" />
<!-- Pretty Print Output -->
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<!-- Remove namepsaces -->
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<!-- Construct response match on root-->
<xsl:template match="/">
<xsl:apply-templates select="*/*/or:requestMessage/or:responseMessage"/>
</xsl:template>
</xsl:stylesheet>