2013-06-26 7 views
2

Я читал много примеров об игнорировании пространств имен, но, похоже, не может воплотить эту концепцию в соответствие с шаблоном.xsl template match игнорировать пространство имен

Вот мой пример XML:

<?xml version="1.0"?> 
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <Response xmlns:ResB="http://www.aaa.com/v1" xmlns:dpconf="http://www.datapower.com/param/config" xmlns:exsl="http://xmlns.opentechnology.org/xslt-extensions/common" xmlns="http://www.aaa.com/v2"> 
     <Status> 
      <Code>00000</Code> 
     </Status> 
     </Response> 
    </soapenv:Body> 
</soapenv:Envelope> 

И я не могу иметь пространство имен в ouptut. Вот пример желаемого выхода:

<A> 
    <Transformed>0000</Transformed> 
</A> 

Это не выводит свои узлы, так как я могу иметь XSLT, чтобы соответствовать узлу реагирования и работать от этого?

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="//*[local-name() = 'Response']"> 
<A> 
<Transformed><xsl:value-of select="Status/Code"/></Transformed> 
</A> 

ответ

9

Почему вы хотите игнорировать пространство имен? Просто объявите его и используйте.

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:v2="http://www.aaa.com/v2" 
    exclude-result-prefixes="v2" 
> 
    <xsl:template match="v2:Response"> 
    <A> 
     <Transformed> 
     <xsl:value-of select="v2:Status/v2:Code" /> 
     </Transformed> 
    </A> 
    </xsl:template> 
</xsl:stylesheet>