[英]How to fail an XML Validation by XSD
嗨,我是XSD和XML的新手。我有以下XML消息,我正在針對一個模式進行驗證。 我正在使用不同的在線編輯器。 例如,這個編輯器正在驗證我的XML結構,但是我的問題是,如果我將元素的類型更改為從字符串浮點型,它仍然會驗證我的XML結構。 所以我很困惑,這意味着我的XSD不正確。
XML檔案:
<?xml version="1.0" encoding="UTF-8"?>
<credentials xmlns:cdm="http://com.example/test/current">
<cdm:username>jawad</cdm:username>
<cdm:password>jawad123</cdm:password>
</credentials>
XSD文件:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:cdm="http://com.example/test/current"
xmlns = "http://com.example/test/current"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="credentials"></xs:element>
<xs:complexType name="credentials">
<xs:sequence>
<xs:element name="username" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="password" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
注意:
如果我將“用戶名”元素的類型更改為“浮動”,則編輯器應顯示驗證失敗錯誤,但仍在驗證它,因此我的xsd出了點問題,或者我不了解架構驗證的概念。
首先,您的架構無法按預期工作,因為您的“憑據”元素未引用“憑據” complexType。 (如果未指定其他類型,則“憑據”元素默認情況下將允許使用任何格式正確的XML-這就是即使即使將“用戶名”聲明為“浮動”的文檔也有效的原因。)
可以更正如下:
<xs:element name="credentials" type="credentials"/>
然后,您能解釋一下如何驗證文件嗎? 確實,它應該由解析器正確處理,但是驗證可能已關閉。
我認為您將遇到名稱空間問題。
實例文檔中的每個名稱空間都需要一個架構文檔(為此,將“ null”名稱空間視為一個名稱空間),並且如果該名稱空間不是“ null”,則必須存在該架構文檔的targetNamespace屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.