0
命名空間,因此驗證XML文件,而無需在XML命名空間聲明我如何修改這個XSD架構工作?當有候選XML包含相同的命名空間的聲明,但顯然的工作流程是,如果我沒有先編輯候選文檔更容易寫XSD無需在目標XML
架構並進行驗證。
我敢肯定,我失去了簡單的東西在這裏,但一個小時的猜測沒有接通的把戲。
架構 - data.xsd
<schema
xmlns=xsd:"http://www.w3.org/2001/XMLSchema"
xmlns:target="http://myurl.com/response"
targetNamespace="http://myurl.com/response"
elementFormDefault="qualified">
<xsd:element name="response">
<xsd:complexType mixed="true" name="response">
<xsd:all>
<xsd:element name="item">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any"
processContents="lax"
minOccurs="0"
maxOccurs="unbounded" /xsd:>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="activities" >
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any"
processContents="lax"
minOccurs="0"
maxOccurs="unbounded" /xsd:>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- et cetera -->
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>
本文檔驗證 - data.namespaced.xml
<?xml version="1.0" encoding="utf-8"?>
<response
xmlns="http://myurl.com/response"
>
<item>
<! -- valid stuff -->
</item>
<activities>
<! -- valid stuff -->
</activities>
</response>
本文件並不 - data.xml中
<?xml version="1.0" encoding="utf-8"?>
<response>
<item>
<! -- valid stuff -->
</item>
<activities>
<! -- valid stuff -->
</activities>
</response>
我使用xmlllint此:
xmllint --noout --schema data.xsd data.[namespaced.].xml
在此先感謝。
繁榮。請解釋爲什麼targetNamespace是這個問題。 – chernevik
啊。因此,使用{targetNamespace}修改元素的完全限定名稱,但方式不那麼容易看到。我發現有一點讓人困惑 - 架構沒有定義一個名稱空間嗎?但我想答案是,不,或者至少不完全。它是爲特定的命名空間定義結構。但是,是否要求受該結構約束的元素是該命名空間的_already_部分是一個選擇,由targetNamespace的行爲所支持。 – chernevik
是的,命名空間很混亂。歡迎來到混淆名稱空間的世界。 –