كيف يمكنني ضمان قيم العناصر الفريدة في مخطط XML؟
سؤال
أريد التأكد من عدم وجود عناوين كتب مكررة في XML التالية:
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="books3.xsd">
<book>
<title>Book1</title>
</book>
<book>
<title>Book2</title>
</book>
<book>
<title>Book1</title> <!-- duplicate should not be allowed -->
</book>
</books>
أنا أستخدم المخطط التالي:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="books">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="book"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="testUnique">
<xs:selector xpath="book"/>
<xs:field xpath="title"/>
</xs:unique>
</xs:element>
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title" type="xs:NCName"/>
</xs:schema>
يخبرني محرر Oxygen XML أن هذا صحيح عندما أقوم بالتحقق.
هل يمكن لأي شخص أن يرى ما أفعله خطأ؟
المحلول
يبدو أن المخطط على ما يرام ويجب أن يكتشف المكررة. قد يكون خطأ في الأكسجين؟
يمكنك تجربة هذا الموقع للتحقق من صحة XML: http://www.xmlvalidation.com
وسترى أنه يجد أخطاء في XMLDOCUMINE:
القيمة الفريدة المكررة [Book1] المعلنة لقيد هوية "كتب" العنصر
لا تنتمي إلى StackOverflow