sar*_*ari 5 xml xslt xml-namespaces
我有一个 XML 文件,其中包含需要删除的默认名称空间和空名称空间,同时保留其余名称空间。
输入:
<prefix:request xmlns:prefix="urn1" xmlns:foo2="urn2" xmlns="urn1">
<element1 xmlns="">version1</element1>
<element2 xsi:type="prefix:requestA" xmlns=""/>
...
</element1>
</prefix:request>
Run Code Online (Sandbox Code Playgroud)
预期输出:
<prefix:request xmlns:prefix="urn1" xmlns:foo2="urn2">
<element1>version1</element1>
<element2 xsi:type="prefix:requestA"/>
...
</element1>
</prefix:request>
Run Code Online (Sandbox Code Playgroud)
用于删除名称空间的 XSLT 示例将过滤掉所有名称空间,包括前缀。知道如何解决这个特殊情况吗?
这个简短的转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:copy-of select="@*|namespace::*[name()]"/>
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当应用于(严重格式错误且必须更正)提供的类似 XML 的输入时:
<prefix:request xmlns:xsi="Undefined !!!"
xmlns:prefix="urn1" xmlns:foo2="urn2"
xmlns="urn1">
<element1 xmlns="">version1</element1>
<element2 xsi:type="prefix:requestA" xmlns=""/> ...
</prefix:request>
Run Code Online (Sandbox Code Playgroud)
产生想要的正确结果:
<prefix:request xmlns:prefix="urn1" xmlns:xsi="Undefined !!!" xmlns:foo2="urn2">
<element1>version1</element1>
<element2 xsi:type="prefix:requestA"/> ...
</prefix:request>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7270 次 |
| 最近记录: |