我有一些使用命名空间的XML数据。我不知道该命名空间代表什么。要将它添加到我的XSL模板,它看起来需要一个可能在某种程度上定义命名空间的URL。是否可以在不知道定义的URL的情况下解析它?我可以手动创建吗?
以下是一些相同的数据:
<?xml version="1.0" encoding="UTF-8"?>
<ns:NODE>
<ns:SUBNODE>
<ns:VALUE>test</ns:VALUE>
</ns:SUBNODE>
</ns:NODE>
我试图获取ns:VALUE但没有运气的价值(我只是给了命名空间xsl转换网址,希望它可以工作):
<xsl:template match="/" xmlns:ns="http://www.w3.org/1999/XSL/Transform">
<document>
<content name="testing">
<xsl:value-of select="/ns:NODE/ns:SUBNODE/ns:VALUE" />
</content>
</document>
</vce>
</xsl:template>
我能够使用这个来获得价值,但我猜这会降低性能:
<xsl:template match="/">
<document>
<content name="testing">
<xsl:value-of select="//*[name() = 'ns:VALUE']" />
</content>
</document>
</vce>
</xsl:template>
答案 0 :(得分:4)
很抱歉,我无法分享确切的数据,因为它很敏感。但是,不包含任何名称空间声明只是开放的xml标记。
包含名称空间元素的文档,如
<?xml version="1.0" encoding="UTF-8"?>
<ns:NODE>
<ns:SUBNODE>
<ns:VALUE>test</ns:VALUE>
</ns:SUBNODE>
</ns:NODE>
必须包含一个名称空间声明,最好是在最外面的元素上:
<?xml version="1.0" encoding="UTF-8"?>
<ns:NODE xmlns:ns="www.example.com">
<ns:SUBNODE>
<ns:VALUE>test</ns:VALUE>
</ns:SUBNODE>
</ns:NODE>
如果没有,则您的输入数据不符合XML条件(即格式错误)。 XSLT样式表只接受格式良好的 XML作为任何转换的输入。