私はSCTE-224標準XMLスキーマ(http://www.scte.org/schemas/224/2015/SCTE224.xsd)の拡張に取り組んでいます。 SCTE-224標準的な要素の内側に行くべき私は自分の名前空間にいくつかのトップレベルの要素を定義したXMLスキーマの拡張機能を正しく検証する方法は?
<xs:element minOccurs="0" name="Metadata">
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other"/>
</xs:sequence>
</xs:complexType>
</xs:element>
:スペックはMetadata
要素内の任意の他の名前空間の要素を含むことにより、規格の拡張が可能になります。例えば、bam:Program
要素:
<Media id="/media/12345" description="A standard SCTE-224 Media element.">
<Metadata>
<bam:Program>
... Additional bam-namespaced elements
</bam:Program>
</Metadata>
</Media>
私の目標は、アカウントに、標準の要素とbam:
の両方の要素を取って、私たちの拡張仕様のスキーマを定義して自分のXSDを持ってできるようにすることです。以下は拡張要素の最初のスタブですが、bam:Program
要素がMedia/Metadata
の内側になければならないことを指定する方法を理解できません。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://specs.bamgrid.com" targetNamespace="http://specs.bamgrid.com" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.w3.org/1999/xlink.xsd"/>
<xs:element name="Genres">
<xs:complexType>
<xs:sequence>
<xs:element name="Genre">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Program">
<xs:complexType>
<xs:sequence>
<xs:element name="ProgramDetails" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ProgramDetail" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string" minOccurs="0"/>
<xs:element name="TitleBrief" type="xs:string" minOccurs="0"/>
<xs:element name="TitleSort" type="xs:string" minOccurs="0"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="DescriptionBrief" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="language" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z][a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ProgramType" type="xs:string" minOccurs="0"/>
<xs:element name="Images" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Image" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute ref="xlink:href" use="required"/>
<xs:attribute name="height" type="xs:int" use="required"/>
<xs:attribute name="width" type="xs:int" use="required"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="key" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="Genres" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="contentSource" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
誰でもこの拡張スキーマを説明するための正しい方向を指摘できますか?
なぜ必要な親要素を指定したいのですか?私はそれが可能だとは思わないが、理由を見ていない。 – daniu
@ daniu - ' 'エレメントは、''の中の' 'エレメントをシステム内で有効にする必要があるためです。 –
Jared
私はあなたがする必要があると思うのは、 'Program'子を必要とする拡張' Media'要素を追加し、それを検証のために使用することです。これは 'Media'以外の名前空間にありますが、xsltを使ってXML文書を新しい名前空間に変換して検証することができます。 – daniu