我正在尝试验证
XML文档中存在的所有元素的属性的唯一性.
示例XML:
<exampleXml> <a id="1"/> <a id="2"> <b id="1"/> </a> </exampleXml>
我的XSD架构:
<xs:schema elementFormDefault="qualified"> <xs:element name="exampleXml"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="a"> <xs:complexType> <xs:complexContent> <xs:extension base="baseRuleType"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="b"> <xs:complexType> <xs:complexContent> <xs:extension base="baseRuleType"/> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:unique name="duplicateIdsForbidden"> <xs:selector xpath="//"/> <xs:field xpath="@id"/> </xs:unique> </xs:element> <xs:complexType name="baseRuleType"> <xs:attribute name="id" use="optional"/> </xs:complexType> </xs:schema>
xpath是这里的问题.我想匹配root下的每个元素,但上面的选择器xpath返回:
Element '{http://www.w3.org/2001/XMLSchema}selector',attribute 'xpath': The XPath expression '//' could not be compiled
我可以将xpath更改为“*”,但这只会验证作为根的直接后代的元素的id属性.
我使用DOMDocument :: schemaValidate()在PHP中使用lib_xml验证这一点.任何帮助非常感谢.
使用< xs:selector xpath =“.//*”/>.
原文链接:https://www.f2er.com/php/130308.html