簡體   English   中英

如何通過XSD失敗XML驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM