Ассоциации XSD по ссылке id, а не по значению?

Я новичок в определениях XML-схем. Посмотрите мои XSD:

<? xml version = "1.0" encoding = "utf-8" ?> <xs: schema elementFormDefault = "квалифицированный" targetNamespace = "http://NamespaceTest.com/AuthorType" xmlns: xs = "http: //www.w3. org / 2001 / XMLSchema " > <xs: element id = " author " name = " author " type = " AuthorType " /> <xs: complexType name = " AuthorType " > <xs: complexContent> <xs: extension base = " PersonType " > <xs: sequence> </ xs: sequence> <xs: attribute name = "id" type = "xs: int" use = "required" /> </ xs: extension> </ xs: complexContent> </ xs: complexType> </ xs: schema> .xsd:

<?xml version="1.0" encoding="utf-8"?>

<xs:schema elementFormDefault="qualified"
targetNamespace="http://NamespaceTest.com/BookType"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="http://NamespaceTest.com/AuthorType"/>
<xs:include schemaLocation="http://NamespaceTest.com/ReaderType"/>
<xs:complexType name="BookType">
    <xs:sequence>
        <xs:element name="name" type="xs:string"/>
        <xs:element name="date" type="xs:string"/>
        <xs:element name="author" type="AuthorType" />
        <xs:element name="reader" type="ReaderType"/>
    </xs:sequence>
    <xs:attribute name="id" type="xs:int"/>
</xs:complexType>
</xs:schema>

BookType.xsd:

id

В id, я хочу иметь authorчитателя и bookавтора. В этом состоянии у меня есть полная authorи readerподробная информация, когда мне нужны только их книги.

xml,xsd,xsd-validation,xml-validation,

1

Ответов: 1


<book> <name> John </ name> <date> 2018-07-12 </ date> <author id = "a1" > <! - элементы автора -> </ author> </ book> = ' 4263417 'itemscope itemtype =' http: //schema.org/Answer '>
0

Это помогает взглянуть на уровень XML.

В настоящее время вы связываетесь authorс включением элемента внутри элемента:<book> <name>John</name> <date>2018-07-12</date> <author idref="a1"/> </book>authorbook

xs:ID

Вместо этого вы хотите просто ссылаться authorна свой id:

xs:IDREF

Это сценарий, поддерживаемый базовыми XML-идентификаторами и ссылками на идентификаторы (в XSD: idи xs:ID). Измените idатрибуты типа, xs:IDREFи ваши ссылочные атрибуты будут иметь тип xs:type.

Заметки:

  • Идентификатор XML должен начинаться с символа namestart (который исключает числа).
  • В качестве альтернативы вы можете использовать xs:tokenили xs:uniqueдля своих идентификаторов и применять уникальность отдельно xs:key.
  • XSD также предлагает xs:keyref/ idв качестве более гибкой альтернативы идентификации идентичности за пределами традиционного механизма XML / DTD id/ idref.
XML, XSD, XSD-валидация, XML-проверка,
Похожие вопросы