XSLT這應該是相當簡單的,我有一些XML:過濾XML使用屬性值
<?xml version="1.0" encoding="UTF-8"?>
<!--Arbortext, Inc., 1988-2012, v.4002-->
<?Pub Inc?>
<chapter role="h1" xml:id="chapter_N3944673" xmlns="http://docbook.org/ns/docbook">
<title>Release Notes</title>
<dynamic_block role="ta_TopicAlias">ReleaseNotes</dynamic_block>
<sidebar outputformat="html_only">
<para condition="wip">Release Preview Draft</para>
<para>Revision Date: August 17, 2016</para>
</sidebar>
這只是一個片段,您可能會注意到它的Docbook格式。我想刪除所有具有@condition值的para節點。所以我這樣做了:
<?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="//para[@condition]" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
哪個沒有做什麼。我也試過// @條件,它只是刪除屬性並保持節點完好無損。此外,para可以出現在其他標籤內的整個文檔中。
如果XSL不是我接受其他想法的最佳方法。
看看是否有幫助:http://stackoverflow.com/questions/34758492/xslt-transform-doesnt-work-until-i-remove-root-node/34762628#34762628 –
這是一個經常遇到的項目來到XML文檔。基本上,你有一個未聲明的名字空間需要一個分配的前綴。 – Parfait