2012-03-09 65 views
2

我不確定「xmllint --c14n」對於 名稱空間是否正常工作。對於以下輸入,W3C Canonicalization的手工傳統 將名稱空間decl xmlns:xsi的下拉列表拖放到Dcoument-Tag。w3c規範化如何爲文檔子集工作?

<?xml version="1.0" encoding="UTF-8"?> 
<conxml xmlns="urn:conxml:xsd:container.nnn.002" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:conxml:xsd:container.nnn.002 container.nnn.002.xsd"> 
    <MsgPain001> 
    <Document xmlns="urn:swift:xsd:$pain.001.002.02"> 
     <pain.001.001.02> 
     </pain.001.001.02> 
    </Document> 
    </MsgPain001> 
</conxml> 
根據我的遺產執行

實際結果:

... 
    <Document xmlns="urn:swift:xsd:$pain.001.002.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
... 

但xmllint --c14n並沒有這樣做,它報告

... 
    <Document xmlns="urn:swift:xsd:$pain.001.002.02"> 
... 

有人能解釋根據誰是正確的規格和 爲什麼?

詳見:http://www.w3.org/TR/2001/REC-xml-c14n-20010315#Example-DocSubsets

+0

你有任何未解決的問題嗎?如果你願意,請評論我的答案。如果您滿意,請點擊賞金點圖標向我獎勵點數。如果您不獎勵積分,我將無法獲得積分,但無論如何,您都會因爲發佈問題而被收費。請參閱http://stackoverflow.com/faq#bounty – 2012-03-19 15:00:36

+0

對不起,我有一段時間沒有上線。是的,您的評論非常有幫助,但我仍然沒有確認。 – Bastl 2012-03-23 14:07:33

+0

我還可以獎勵你的賞金嗎? – Bastl 2012-03-23 14:08:00

回答

1

根據規範(第4.6節):

不必要的命名空間聲明未在規範形式。

的「http://www.w3.org/2001/XMLSchema-instance」命名空間是沒有必要表示文檔的子集,因爲,將xsi:不包括schemaLocation屬性和名稱空間因此「不必要的」 。