【发布时间】:2013-12-19 16:09:13
【问题描述】:
我是 XML 转换 (XSLT) 的新手。 我正在尝试找出我面临的命名空间问题并需要一些帮助。
详情如下:
XSLT 文件:
<?xml version="1.0" encoding="utf-8"?>
<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:output method="xml" indent="yes"/>
<xsl:template match="/">
<Address xmlns="http://gov.co.uk">
<xsl:variable name="NameSpace">http://gov.co.uk/Test/1</xsl:variable>
<xsl:element name="Name" namespace="{$NameSpace}">
<ForeName>Rex</ForeName>
<MiddleName>XYZ</MiddleName>
</xsl:element>
<xsl:element name="street" namespace="{$NameSpace}">
<DoorNo>123</DoorNo>
</xsl:element>
</Address>
</xsl:template>
</xsl:stylesheet>
输出 XML:
<?xml version="1.0" encoding="utf-8"?>
<Address xmlns="http://gov.co.uk">
<Name xmlns="http://gov.co.uk/Test/1">
<ForeName xmlns="http://gov.co.uk">Rex</ForeName>
<MiddleName xmlns="http://gov.co.uk">XYZ</MiddleName>
</Name>
<street xmlns="http://gov.co.uk/Test/1">
<DoorNo xmlns="http://gov.co.uk">123</DoorNo>
</street>
</Address>
如您所见,ForeName 的命名空间是 xmlns="http://gov.co.uk" 派生自根节点 Address,但我需要它派生自最近的父节点Name,即xmlns="http://gov.co.uk/test/1"。
我下面有这样的东西
<xsl:element name="ForeName" namespace="{$NameSpace}">REX</xsl:element>
但我不相信这一点,因为我的 XSLT 文件中有数百个元素,我需要像上面一样修改每个元素。
有什么办法可以强制子元素命名空间从其父节点派生?
【问题讨论】:
标签: xml xslt xml-namespaces