1
我想使用xslt將xml文件轉換爲幾乎相同的xml文件,但會根據屬性剝離節點。如果一個節點有一個屬性,它的子節點並沒有被複制到輸出文件中。例如我想從具有的「not_really」基於屬性的xslt帶節點樹
這是要轉換的XML「健康」的屬性下面的XML文件剝離節點
<diet>
<breakfast healthy="very">
<item name="toast" />
<item name="juice" />
</breakfast>
<lunch healthy="ofcourse">
<item name="sandwich" />
<item name="apple" />
<item name="chocolate_bar" healthy="not_really" />
<other_info>lunch is great</other_info>
</lunch>
<afternoon_snack healthy="not_really" >
<item name="crisps"/>
</afternoon_snack>
<some_other_info>
<otherInfo>important info</otherInfo>
</some_other_info>
</diet>
這是所需的輸出
<?xml version="1.0" encoding="utf-8" ?>
<diet>
<breakfast healthy="very">
<item name="toast" />
<item name="juice" />
</breakfast>
<lunch healthy="ofcourse">
<item name="sandwich" />
<item name="apple" />
<other_info>lunch is great</other_info>
</lunch>
<some_other_info>
<otherInfo>important info</otherInfo>
</some_other_info>
</diet>
這是我曾嘗試(不sucess :)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()[@healthy=not_really]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
這可能是有趣的,知道你的第一個解決方案不正確。試試這個XML文檔:''並且看到頂層節點*是*輸出 - 但它不應該。 –