我想使用xslt从给定的xml获取输出xml。输出xml将在给定的xml中添加一些元素。但是我没有得到所需的输出。
我有一个输入xml,如:
<Response xmlns="http://xyz.abc/max/" xmlns:ns1="http://xyz.abc/max/">
<out xmlns="">
<Number xmlns="http://xyz.abc/max/">Desc1</Number>
<Address xmlns="http://xyz.abc/max">Desc2</Address>
<Records xmlns="http://xyz.abc/max">Desc3</Records>
</out>
</Response>
我想要输出xml,如:
<?xml version="1.0" encoding="UTF-8"?>
<abc:Reqeust xmlns:abc="http://www.nnn.com/bnm"
xmlns:ns1="http://xyz.abc/max/" xmlns="http://xyz.abc/max/" >
<abc:Tray>
<abc:Remote>
<abc:ID>ID1</abc:ID>
<abc:Distance>Always</abc:Distance>
</abc:Remote>
<abc:Time>
1100-01-01T01:01:01+05:30
</abc:Time>
<abc:AreaMap />
</abc:Tray>
<abc:Area>
<abc:Get>
<abc:Fault>Token1</abc:Fault>
</abc:Get>
<Response xmlns="http://xyz.abc/max/" xmlns:ns1="http://xyz.abc/max/">
<out xmlns="">
<Number xmlns="http://xyz.abc/max/">Desc1</Number>
<Address xmlns="http://xyz.abc/max">Desc2</Address>
<Records xmlns="http://xyz.abc/max">Desc3</Records>
</out>
</Response>
</abc:Area>
</abc:Reqeust>
我正在使用xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:abc="http://www.nnn.com/bnm"
xmlns:ns1="http://xyz.abc/max/" xmlns="http://xyz.abc/max/" >
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Response">
<abc:Request>
<abc:Tray>
<abc:Remote>
<abc:ID>ID1</abc:ID>
<abc:Distance>Always</abc:Distance>
</abc:Remote>
<abc:Time>
1100-01-01T01:01:01+05:30
</abc:Time>
<abc:AreaMap />
</abc:Tray>
<abc:Area>
<abc:Get>
<abc:Fault>Token1</abc:Fault>
</abc:Get>
<Response>
<xsl:apply-templates select="@*|node()"/>
</Response>
</abc:Area>
</abc:Request>
</xsl:template>
</xsl:stylesheet>
但我没有得到所需的输出。 我应该在xslt中进行哪些更改才能获得所需的输出xml?
答案 0 :(得分:0)
在xslt-1.0中,您始终使用名称空间前缀来访问属于名称空间的名称。
输入XML中的 Response 元素属于默认命名空间xmlns="http://xyz.abc/max/"
您已将此命名空间添加为xmlns:ns1="http://xyz.abc/max/
。
因此,请更改“响应”表单的模板:
<xsl:template match="Response">
为:
<xsl:template match="ns1:Response">
将生成以下输出:
<?xml version="1.0"?>
<abc:Request xmlns:abc="http://www.nnn.com/bnm" xmlns:ns1="http://xyz.abc/max/" xmlns="http://xyz.abc/max/">
<abc:Tray>
<abc:Remote>
<abc:ID>ID1</abc:ID>
<abc:Distance>Always</abc:Distance>
</abc:Remote>
<abc:Time>
1100-01-01T01:01:01+05:30
</abc:Time>
<abc:AreaMap/>
</abc:Tray>
<abc:Area>
<abc:Get>
<abc:Fault>Token1</abc:Fault>
</abc:Get>
<Response>
<out xmlns="">
<Number xmlns="http://xyz.abc/max/">Desc1</Number>
<Address xmlns="http://xyz.abc/max">Desc2</Address>
<Records xmlns="http://xyz.abc/max">Desc3</Records>
</out>
</Response>
</abc:Area>
</abc:Request>