我想要一个XPath,它将考虑一个特定的组并忽略所有其他组。以下是我的XML代码:
<GetBillList>
<Case>
<CaseID>...</CaseID>
<BillGroup>
<BillGroupID>...</BillGroupID>
</BillGroup>
</Case>
<StartDate>2014-01-01</StartDate>
<GetBillListResponse>
<Bill>
<BillStatusCode>
<BillStatusCode>type description</BillStatusCode>
<typecode>1</typecode>
</BillStatusCode>
<EBillProcessStatusCode>
<EBillProcessStatusCode>type description</EBillProcessStatusCode>
<typecode>2</typecode>
</EBillProcessStatusCode>
<ToDate>...</ToDate>
</Bill>
</GetBillListResponse>
</GetBillList>
XSLT代码:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:copy>
<xsl:for-each select="id | typecode">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates select="node()[not(self::id or self::typecode)]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[name(.) = name(..)]">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
我想让它在“GetBillListResponse”上工作,只忽略“Case”组&amp; “StartDate”元素。
期望的输出:
<GetBillList>
<GetBillListResponse>
<Bill>
<BillStatusCode typecode="1">type description</BillStatusCode>
<EBillProcessStatusCode typecode="2">type description</EBillProcessStatusCode>
<ToDate>...</ToDate>
</Bill>
</GetBillListResponse>
</GetBillList>
会对此提出任何帮助!
答案 0 :(得分:0)
如果我将我的答案基于您当前的输入和XSLT,只需添加:
<xsl:template match="Case|StartDate"/>
在样式表中。
修改强>
如果你想在你喜欢的节点上工作,请改为:
<xsl:template match="/">
<GetBillList>
<xsl:apply-templates select="GetBillList/GetBillListResponse"/>
</GetBillList>
</xsl:template>