繁体   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