我是XSLT的新手。我有以下XML结构。如何在类似的结构中形成XSLT,我可以以类似的方式包含所有上述命名空间?
<?xml version='1.0' encoding='UTF-8'?>
<NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/">
<NS1:Body>
<NS2:Data xmlns:NS2="myurl1.....">
<NS3:Created xmlns:NS3="myurl2....."></NS3:Created>
<NS5:Success xmlns:NS5="myurl3....."></NS5:Success>
</NS2:Data>
</NS1:Body>
</NS1:Envelope>
答案 0 :(得分:0)
我不知道标准XSLT是否可行。但是,使用System.Xml,您可以按以下方式插入命名空间节点。我怀疑同样适用于非托管MSXML,但尚未尝试
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:template match="/*">
<xsl:variable name="fragment">
<dummy xmlns:foo="bar" />
</xsl:variable>
<xsl:copy>
<xsl:copy-of select="msxsl:node-set($fragment)/dummy/namespace::foo" />
<xsl:copy-of select="node() | @*" />
</xsl:copy>
</xsl:template>
答案 1 :(得分:0)
您可以在元素的开始标记中使用xmlns
属性定义命名空间。
单独使用,它定义了与前缀相关联的默认命名空间,它定义了其他命名空间(例如xmlns:toto =&#34; namespaceURI&#34;)
参见xml namespace 在示例中,他们定义:
<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture">
您可以在此示例中使用h
或f
作为
<h:table>
<f:table>
对于您的示例,用于定义NS2:
<NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:NS2="YOUR_NAMESPACE_URI_FOR_NS2">
<NS1:Body>
<NS2:Data>
<NS3:Created></NS3:Created>
<NS5:Success></NS5:Success>
</NS2:Data>
</NS1:Body>
</NS1:Envelope>
为NS3,NS5等做同样的事情。