2016-08-11 125 views
0

我有一個XML。刪除XML名稱空間,而忽略根目錄下的名稱空間

<ClinicalDocuments> 

<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:axolotl="urn:axolotl-com:pdo"> 
     <realmCode xmlns="" code="US"/> 
     <typeId xmlns="" extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/> 
     <templateId xmlns="" root="1.3.6.1.4.1.19376.1.5.3.1"/> 
     <templateId xmlns="" root="1.3.6.1.4.1.19376.1.5.3.1.1"/> 
     <templateId xmlns="" root="1.3.6.1.4.1.19376.1.5.3.1.1.1"/> 
     <templateId xmlns="" root="2.16.840.1.113883.10.20.3"/> 
     <templateId xmlns="" root="2.16.840.1.113883.10.20.1"/> 
     <templateId xmlns="" root="2.16.840.1.113883.3.88.11.32.1"/> 
     <id xmlns="" root="006e50e9-29b5-4ab2-8c0b-202819b39646"/> 
blah 
blah 
</ClinicalDocument> 
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
blah 
blah 
. 
. 
</ClinicalDocument> 

</ClinicalDocuments> 

xmlns =「」正在過度檢查主要的xmlns。

我想刪除xmlns =「」上的所有其他實例,同時將其保留在根節點上「ClinicalDocument xmlns =」urn:hl7-org:v3「xmlns:voc =」urn:hl7-org:v3/voc「xmlns:xsi =」http://www.w3.org/2001/XMLSchema-instance「xmlns:axolotl =」urn:axolotl-com:pdo「

還有許多其他xmlns =」「整個XML。 請幫助。

+1

您的問題不清楚。首先,'ClinicalDocument'不是根節點。接下來,它的子節點處於非命名空間,並且需要'xmlns =「」'decalration來清除。你想把它們移到父母的名字空間嗎?這將有效地改變你的XML模式,所以在你做之前請仔細考慮後果。 –

回答

1

你不能操縱空間聲明直接在XSLT。你應該確保在結果樹中的每個元素是在正確的命名空間,然後在命名空間聲明將採取的自動處理。

例如,如果不希望xmlns=""出現在realmCode元素上,則應確保在與其父元素相同的名稱空間中生成realmCode元素。這可以通過一個模板規則來完成,例如:

<xsl:template match="realmCode"> 
    <xsl:element name="{local-name()}" namespace="urn:hl7-org:v3"> 
    <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 
+0

非常感謝您的回覆。但我想使用與其父級相同的名稱空間。那麼有沒有辦法將xmlns =「」變成xmlns =「urn:hl7-org:v3」? –

+0

你似乎沒有理解我的答案。不用擔心名稱空間聲明。只需在所需的名稱空間中創建元素,並且名稱空間聲明將自行處理。 –

0

只要刪除的xmlns=""所有實例。此XML通過驗證和xmlns<ClinicalDocument>將不會被覆蓋了:

<ClinicalDocuments> 
    <ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:axolotl="urn:axolotl-com:pdo"> 
     <realmCode code="US"/> 
     <typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/> 
     <templateId root="1.3.6.1.4.1.19376.1.5.3.1"/> 
     <templateId root="1.3.6.1.4.1.19376.1.5.3.1.1"/> 
     <templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.1"/> 
     <templateId root="2.16.840.1.113883.10.20.3"/> 
     <templateId root="2.16.840.1.113883.10.20.1"/> 
     <templateId root="2.16.840.1.113883.3.88.11.32.1"/> 
     <id root="006e50e9-29b5-4ab2-8c0b-202819b39646"/> 
blah 
blah 
    </ClinicalDocument> 
    <ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
blah 
blah... 
    </ClinicalDocument> 
</ClinicalDocuments> 
+0

但我將有大約80,000這些xml的傳入流。所以我們不能想到手動刪除。有沒有辦法讓xmlns =「」變成xmlns =「urn:hl7-org:v3」? –