当输入xml没有名称空间时,我可以将一个Xml转换为另一个,但是当输入xml具有名称空间时,我无法获得所需的输出。
Input.xml(W / O命名空间)
<?xml version="1.0" encoding="UTF-8"?>
<addressbook>
<address>
<addressee>John Smith</addressee>
<streetaddress>250 18th Ave SE</streetaddress>
<city>Rochester</city>
<state>MN</state>
<postalCode>55902</postalCode>
</address>
<address>
<addressee>Yogesh</addressee>
<streetaddress>Saligramam</streetaddress>
<city>Chennai</city>
<state>TAmil nadu</state>
<postalCode>600026</postalCode>
</address>
</addressbook>
Xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:element name="EmployeeDetail">
<xsl:apply-templates select="addressbook/address"/>
</xsl:element>
</xsl:template>
<xsl:template match="addressbook/address">
<xsl:element name="Employee" >
<xsl:value-of select="concat(city,'-',addressee,'-',postalCode)"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Output.xml(W / O命名空间)
<?xml version="1.0" encoding="UTF-8"?><EmployeeDetail>
<Employee>Rochester-John Smith-55902</Employee>
<Employee>Chennai-Yogesh-600026</Employee>
</EmployeeDetail>
输入xml(带有命名空间)
<?xml version="1.0" encoding="UTF-8"?>
<addressbook xlmns="http:\\abc.com\Buspart">
<address>
<addressee>John Smith</addressee>
<streetaddress>250 18th Ave SE</streetaddress>
<city>Rochester</city>
<state>MN</state>
<postalCode>55902</postalCode>
</address>
<address>
<addressee>Yogesh</addressee>
<streetaddress>Saligramam</streetaddress>
<city>Chennai</city>
<state>TAmil nadu</state>
<postalCode>600026</postalCode>
</address>
</addressbook>
以上输入的Output.xml(带有命名空间)
<?xml version="1.0" encoding="UTF-8"?></EmployeeDetail>
如何使用上述输入(具有名称空间)检索结果?
以下XSL起作用:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:f="http:\\abc.com\Buspart">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:element name="EmployeeDetail">
<xsl:apply-templates select="/f:addressbook/f:address"/>
</xsl:element>
</xsl:template>
<xsl:template match="/f:addressbook/f:address">
<xsl:element name="Employee" >
<xsl:value-of select="concat(f:city, '-', f:addressee, '-', f:postalCode)"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
这是因为通过在输入xml中添加名称空间,您不再可以仅通过本地名称来引用XML元素,而是还必须指定路径的名称空间uri部分(请参见http://en.wikipedia.org/wiki /XPath#Syntax_and_semantics_.28XPath_1.0.29)
顺便说一句,您在输入xml中也有一个错字:xlmns应该是xmlns。
输出:
<EmployeeDetail>
<Employee>Rochester-John Smith-55902</Employee>
<Employee>Chennai-Yogesh-600026</Employee>
</EmployeeDetail>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句