获取XML节点的孩子与XML标签一起
问题描述:
我有以下的输入XML获取XML节点的孩子与XML标签一起
<?xml version="1.0" encoding="UTF-8"?>
<Parent>
<ParentElement1>PE1</ParentElement1>
<ParentElement2>PE2</ParentElement2>
<Child>
<ChildElement1>CE1</ChildElement1>
<ChildElement2>CE2</ChildElement2>
</Child>
</Parent>
我需要提取孩子现在里面父母,
输出必须是这样的:
<Child>
<ChildElement1>CE1</ChildElement1>
<ChildElement2>CE2</ChildElement2>
</Child>`
我已尝试使用XPath表达式/Parent/Child
, ,但它仅选择文本CE1 & CE2。
答
这里的关键是使用<xsl:copy-of>
而不是<xsl:value-of>
。
从XSL规格:The xsl:copy-of element can be used to copy a node-set over to the result tree without converting it to a string.
。
使用以下样式:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes" />
<!-- To get rid of <?xml ... declaration, use the following:
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" /> -->
<xsl:template match="/">
<!-- use copy-of instead of value-of -->
<xsl:copy-of select="/Parent/Child" />
</xsl:template>
</xsl:stylesheet>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<Child>
<ChildElement1>CE1</ChildElement1>
<ChildElement2>CE2</ChildElement2>
</Child>