特定のシステムの制限により、少し不便な形式の XML を使用する必要があります。便利な形に変換する必要があるもの。
質問: 次のプロパティを持つ要素を XSD スキーマで定義するにはどうすればよいですか。
- 子供がいない
- 属性がありません
- 任意の名前があります(それが問題の原因です)
<xsd:any/>要素をXmlスキーマインスタンスタイプ属性と一緒に使用できます。
スキーマ
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:any processContents="strict" namespace="##local"></xsd:any>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="st">
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
</xsd:schema>
Xmlインスタンスをテストします
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- valid -->
<one xsi:type="st">value one</one>
<emptyone xsi:type="st"/>
<!-- invalid -->
<two name="myname" xsi:type="st">value two</two>
<!-- invalid -->
<three xsi:type="st">
<four xsi:type="st">value four</four>
</three>
</root>
結論
xsdスキーマだけで単純型を強制することはできません。