Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xml-验证给定元素的属性组合_Xml_Validation_Xsd - Fatal编程技术网

xml-验证给定元素的属性组合

xml-验证给定元素的属性组合,xml,validation,xsd,Xml,Validation,Xsd,我有如下类似的xml <Map> <MapItem name="firstName" value="john" /> <MapItem name="middleName" value="q" /> <MapItem name="lastName" value="public" /> <MapItem name="phone" value="123-456-7890" /> <MapItem name="ssn" value="12

我有如下类似的xml

<Map>
<MapItem name="firstName" value="john" />
<MapItem name="middleName" value="q" />
<MapItem name="lastName" value="public" />
<MapItem name="phone" value="123-456-7890" />
<MapItem name="ssn" value="123-45-6789" />
<MapItem name="email" value="john@email.com" />
</Map>
我想提出一个xsd,它可以验证每个MapItem的属性值

例如:

middleName=单个字符 phone=一些正则表达式模式 ssn=其他一些正则表达式模式 等 仅使用一个xsd就可以做到这一点吗


注意:目前我正在使用xslt将这个xml转换成一个更基于元素的结构,我可以很容易地验证它;但我需要在不进行任何xslt转换的情况下执行此操作。

不幸的是,XSD模式不支持条件验证。您将无法使用XSD模式执行正在查找的验证

您已经在使用一种解决方案,即XSLT转换。您还可以使用XSLT一步执行验证,其中XSLT转换的输出将是验证错误的列表

我还发现了一个关于使用Schemtron和/或RELAXNG模式的方法的网站


希望这有帮助

谢谢你的链接。我已经研究过这些选项,但排除了它们。不幸的是,它只能用xsd来完成,因为他们不想重新编写任何代码来适应Schematron或RelaxNG。如果你能控制这个XML的格式,也许你能说服他们改变这个XML的格式,使用元素而不是属性。