我是XSLT中的新成員,我需要根據屬性值刪除少數子節點,然後刪除其父節點(如果沒有子標記)在它下面。將一個xsl模板輸出傳遞給XSLT中的其他xsl模板輸入以進行進一步處理
例如示例XML輸入類型1:
<?xml version="1.0" encoding="UTF-8"?>
<GrandFather>
<Father>
<Father-bro>Bro</Father-bro>
<Father-sis>Sis</Father-sis>
<Child name="real">Real Children</Child>
<Child name="fake">FakeChildren</Child>
</Father>
</GrandFather>
預期輸出:
<?xml version="1.0" encoding="UTF-8"?>
<GrandFather>
<Father>
<Father-bro>Bro</Father-bro>
<Father-sis>Sis</Father-sis>
<Child name="real">Real Children</Child>
</Father>
</GrandFather>
例如示例XML輸入類型2:
<?xml version="1.0" encoding="UTF-8"?>
<GrandFather>
<Father>
<Father-bro>Bro</Father-bro>
<Father-sis>Sis</Father-sis>
<Child name="fake">Real Children</Child>
<Child name="fake">FakeChildren</Child>
</Father>
</GrandFather>
預期輸出:刪除父標籤,如果沒有name屬性的子標籤「假」,並刪除爺爺標籤如果根本沒有父親的標籤(如父標籤將會從早期的邏輯刪除)
<?xml version="1.0" encoding="UTF-8"?>
要求:
如果孩子有標籤的「name」屬性值「假」,那麼我們就應該刪除特定的子標籤。所有子標籤都可以具有名稱屬性爲「假」或無。 之後檢查:
如果在父標籤下沒有子標籤,則還要刪除父標籤,或者只刪除名稱屬性爲「假」的子標籤,並將真實子標籤與其他標籤一起保存。
如果在祖父標記下沒有父親 標記,則刪除祖父標記。
我的代碼分佈研究: 我能寫XSL,這將刪除所有的子標籤,方含name屬性爲「假」。 但是,當我做同樣的父親或祖父標記,然後它不考慮被刪除的孩子xml(第一個xsl:模板的輸出),而是檢查與原始的xml模板。
我的XSL(這將刪除所有的孩子具有屬性名稱爲「假」),用於樣品輸入XML類型1,但是,當輸入類型是樣品輸入XML它不會覆蓋2
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//Child[@name='fake']"/>
</xsl:stylesheet>
誰可以幫我這個事?
http://stackoverflow.com/help/someone-answers –