拡張(拡張)XML Schema要素を元の要素の形式に変換する方法を見つけようとします。例のシナリオは以下の通りです:XQueryでXMLスキーマ型から他のXML Schema型に変換する
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.example.com/address"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:add="http://www.example.com/address"
elementFormDefault="qualified">
<complexType name="Address">
<sequence>
<element name="name" type="string"/>
<element name="street" type="string"/>
<element name="city" type="string"/>
</sequence>
</complexType>
<complexType name="UKAddress">
<complexContent>
<extension base="add:Address">
<sequence>
<element name="postcode" type="ipo:UKPostcode"/>
</sequence>
<attribute name="exportCode" type="positiveInteger" fixed="1"/>
</extension>
</complexContent>
</complexType>
<simpleType name="UKPostcode">
<restriction base="string">
<pattern value="[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}"/>
</restriction>
</simpleType>
<element name="UKAddress" type="add:UKAddress" />
<element name="Address" type="add:Address" />
</schema>
これはスキーマである、と私はこのtransfromしよう:この中へ
<UKAddress xmlns="http://www.example.com/address" exportCode="1">
<name>Address1</name>
<street>Example street</street>
<city>London</city>
<postcode>AA00 0AA</postcode>
</UKAddress>
:
<UKAddress xmlns="http://www.example.com/address">
<name>Address1</name>
<street>Example street</street>
<city>London</city>
</UKAddress>
児のすべてを変換しません要素を1つずつ(これはうまくいきますが)キャストのような一般的な方法で使用します。要点は、Address要素の継承のような構造を使用し、map(Xquery)とleaf要素の間の高い結合を避けることです。私はいくつかのキャスト関数を見つけようとしましたが、それらはプリミティブのためのものです。私はxsi:typeを使用しようとしましたが、すべての子要素に質問してフィルタリングしようとしました。私は働く方法を見つけませんでした。誰かがこれで会ったことがありますか?ありがとう!