我有一個要求,我想根據條件從xml中刪除一些標記。從某些情況下過濾掉xml標記
這裏是我的XML輸入:
<?xml version="1.0" encoding="UTF-8"?>
<TCXML xmlns="http://www.tcxml.org/Schemas/TCXMLSchema">
<File creation_date="2012-09-20T07:28:47Z" elemId="id280" exportedFileName="sheet 1" last_mod_date="2012-09-20T07:28:48Z" text_flag="8192">
<GSIdentity elemId="id111" label="R0dB1SzBBT4jNA"/>
</File>
<File creation_date="2012-09-20T07:18:26Z" elemId="id283"exportedFileName="test part" last_mod_date="2012-09-20T07:18:26Z" text_flag="8192">
<GSIdentity elemId="id31" label="SIWBFqLyBT4jNA"/>
</File>
<File creation_date="2012-09-20T07:21:03Z" elemId="id322" exportedFileName="test part3" last_mod_date="2012-09-20T07:21:03Z" text_flag="8192">
<GSIdentity elemId="id46" label="ycUBFqLyBT4jNA"/>
</File>
<File creation_date="2012-09-20T07:18:25Z" elemId="id285" exportedFileName="test part2" last_mod_date="2012-09-20T07:18:25Z" text_flag="4096">
<GSIdentity elemId="id29" label="SQRBFqLyBT4jNA"/>
</File>
<Sheet creation_date="2012-09-20T07:28:48Z" date_released="" ead_paragraph="" elemId="id185" keep_limit_prop="3" last_mod_date="2012-09-20T07:28:48Z" object_desc="" object_name="Sheet 1" ref_list="#id111">
<GSIdentity elemId="id112" label="R4WB1SzBBT4jNA"/>
</Sheet>
<PART creation_date="2012-09-20T07:21:22Z" date_released="" ead_paragraph="" elemId="id435" keep_limit_prop="3" last_mod_date="2012-09-20T07:21:28Z" object_name="dwgTest-AA-dwg1" ref_list="#id29 #id31">
<GSIdentity elemId="id32" label="SxZBFqLyBT4jNA"/>
</PART>
<PART creation_date="2012-09-20T07:21:23Z" date_released="2012-09-20T07:21:27Z" ead_paragraph="" elemId="id438" keep_limit_prop="3" last_mod_date="2012-09-20T07:21:29Z" object_name="dwgTest-AA-dwg2" ref_list="#id46">
<GSIdentity elemId="id21" label="itfBFqLyBT4jNA"/>
</PART>
</TCXML>
我想從這個XML其中有一部分是與ref_list標籤簡稱刪除這些文件標籤。
我想用下面的XSL,
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plm="http://www.tcxml.org/Schemas/TCXMLSchema" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="plm:File">
<xsl:variable name="Ref_List" select="translate(/plm:TCXML/plm:PART/@ref_list,' ','')" />
<xsl:variable name="currentElementGSId" select="plm:GSIdentity/@elemId" />
<xsl:variable name="RefcurrentElementGSId" select="concat(string('#'),$currentElementGSId)" />
<xsl:choose>
<xsl:when test="((contains($Ref_List,$RefcurrentElementGSId))=true())" >
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
以上XSL是工作僅在XML一個部分,而不是全部零件標記從XML,如何通過全部零件標記在XML循環。 感謝您的幫助提前。
我要找輸出該XML如下,
<?xml version="1.0" encoding="UTF-8"?>
<TCXML xmlns="http://www.tcxml.org/Schemas/TCXMLSchema">
<File creation_date="2012-09-20T07:28:47Z" elemId="id280" exportedFileName="sheet 1" last_mod_date="2012-09-20T07:28:48Z" text_flag="8192">
<GSIdentity elemId="id111" label="R0dB1SzBBT4jNA"/>
</File>
<Sheet creation_date="2012-09-20T07:28:48Z" date_released="" ead_paragraph="" elemId="id185" keep_limit_prop="3" last_mod_date="2012-09-20T07:28:48Z" object_desc="" object_name="Sheet 1" ref_list="#id111">
<GSIdentity elemId="id112" label="R4WB1SzBBT4jNA"/>
</Sheet>
<PART creation_date="2012-09-20T07:21:22Z" date_released="" ead_paragraph="" elemId="id435" keep_limit_prop="3" last_mod_date="2012-09-20T07:21:28Z" object_name="dwgTest-AA-dwg1" ref_list="#id29 #id31">
<GSIdentity elemId="id32" label="SxZBFqLyBT4jNA"/>
</PART>
<PART creation_date="2012-09-20T07:21:23Z" date_released="2012-09-20T07:21:27Z" ead_paragraph="" elemId="id438" keep_limit_prop="3" last_mod_date="2012-09-20T07:21:29Z" object_name="dwgTest-AA-dwg2" ref_list="#id46">
<GSIdentity elemId="id21" label="itfBFqLyBT4jNA"/>
</PART>
</TCXML>
您是否注意到目前接受的答案是dos * not *產生提供的通緝結果? –
如果您在答案中發現錯誤,通知發佈錯誤的人會被認爲是禮貌的。如果出現錯誤,我確信@lwburk寧願糾正它。 – Flynn1179
@ Flynn1179,如果一個人自己發現錯誤,這是一個更好的教育體驗。 lwburk是非常有經驗的,他早在你寫這個評論之前就已經找到了原因。另外,他被OP通知他的解決方案不會產生想要的結果。所以,你認爲lwburk沒有被告知這個問題的假設與事實相矛盾。 –