Удаление узлов XML с использованием XSLT
У меня есть следующий 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>
Я хочу удалить <Phone>
node из каждой строки, а также из описания столбца.
SO my result 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>
Как мне это достичь? Я пробовал различные XSLT, но я не могу этого сделать.
Ответы
Ответ 1
<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>