使用 XSLT 删除 XML 节点
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12152519/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-06 13:39:33 来源:igfitidea点击:
Removing XML Nodes using XSLT
提问by Soham Shah
I have the following XML:
我有以下 XML:
<?xml version="1.0" encoding="utf-8"?>
<Rowsets>
<Rowset>
<Columns>
<Column Description="FirstName" MaxRange="1" MinRange="0" Name="FirstName" SQLDataType="12" SourceColumn="FirstName"/>
<Column Description="LastName" MaxRange="1" MinRange="0" Name="LastName" SQLDataType="12" SourceColumn="LastName"/>
<Column Description="Phone" MaxRange="1" MinRange="0" Name="Phone" SQLDataType="1" SourceColumn="Phone"/>
</Columns>
<Row>
<FirstName>Michael</FirstName>
<LastName>David</LastName>
<Phone>1234567890</Phone>
</Row>
<Row>
<FirstName>David</FirstName>
<LastName>Michael</LastName>
<Phone>01234567890</Phone>
</Row>
<Row>
<FirstName>Yang</FirstName>
<LastName>Christina</LastName>
<Phone>2345678901</Phone>
</Row>
<Row>
<FirstName>Grey</FirstName>
<LastName>Meredith</LastName>
<Phone>3456789012</Phone>
</Row>
<Row>
<FirstName>David</FirstName>
<LastName>Shepherd</LastName>
<Phone>5678901234</Phone>
</Row>
</Rowset>
I want to remove <Phone>node from every Row as well as from Column description.
我想<Phone>从每一行以及列描述中删除节点。
SO my resultant XML would look like following:
所以我得到的 XML 将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Rowsets>
<Rowset>
<Columns>
<Column Description="FirstName" MaxRange="1" MinRange="0" Name="FirstName" SQLDataType="12" SourceColumn="FirstName"/>
<Column Description="LastName" MaxRange="1" MinRange="0" Name="LastName" SQLDataType="12" SourceColumn="LastName"/>
</Columns>
<Row>
<FirstName>Michael</FirstName>
<LastName>David</LastName>
</Row>
<Row>
<FirstName>David</FirstName>
<LastName>Michael</LastName>
</Row>
<Row>
<FirstName>Yang</FirstName>
<LastName>Christina</LastName>
</Row>
<Row>
<FirstName>Grey</FirstName>
<LastName>Meredith</LastName>
</Row>
<Row>
<FirstName>David</FirstName>
<LastName>Shepherd</LastName>
</Row>
</Rowset>
How do I achieve that? I tried various XSLT but I am not able to do it.
我如何做到这一点?我尝试了各种 XSLT,但我无法做到。
回答by Sean B. Durkin
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Column[@SourceColumn='Phone']|Phone" />
</xsl:stylesheet>

