2017-08-03 10 views
0

スペースが含まれている場合、xs:listのアイテムをどのように表現できますか?XMLのスペースをエスケープするxs:list

スキーマ断片:

<xs:simpleType name="mylisttype"> 
    <xs:list itemType="xs:string" /> 
</xs:simpleType> 

<xs:element name="mylist" type="mylisttype" /> 

例XMLフラグメント:

<mylist>item1 item2 item3 item4</mylist> 

出力例:

["item1", "item2", "item3", "item4"] 

例XMLフラグメント(間違った)

<mylist>Item One Item Two Item Three Item Four</mylist> 

所望の出力:

["Item One", "Item Two", "Item Three", "Item Four"] 

答えて

0

これは、これが不可能であることを示しています。

A・リスト・データ型は、・通常の又はより・構築することができる・プリミティブ・・アトミック・データ型その・字句スペース・可能空白または・ユニオン・データ型を持つ任意の(例えば、文字列またはanyURIのような) {メンバー型定義}のレキシカルスペースはスペースを許します。項目の字句表現が値にマッピングされる前に空白でリスト項目が区切られているので、項目型が原則的に許可されている場合であっても、リスト項目の字句表現に空白が現れることはないそれ。同様の理由から、項目型の値空間における与えられた値のすべての可能な語彙表現が空白を含むとき、その値はリストのデータ型のいかなる値においても項目として出現することはありません。

W3C XML Schema Definition Language (XSD) 1.1 Part 2, Section 2.4.1.2

からIは、XMLエンティティコード&#032;としてスペースをエスケープすることも(のlibxml2とlibxsltはに基づいている)は、少なくともlxmlのでは、動作しないことを試験した後に確認することができます。

1

あなたはxs:listでメンバーの区切りとしてスペースを変更することはできません、あなたがメンバー文字列内のスペースをエスケープすることはできません

でうまく動作しない複雑なリストの要素を使用する。

については、XSD design rationale regarding custom list delimiters hereをご覧ください。


+0

私はこれを読んだので、区切り文字を変更したくありません。私の使用例では、 'xs:list'が最も適切な型です。リスト内の各文字列は、短い原子識別子であり、時には既知のセットからの空白文字を含むことがあります。 –

+0

@BenSarahGolightly: 'xs:list'の文字列内のスペースのためのエスケープメカニズムがないことを明確にするために更新されました。代わりに要素を使用するか、リストの検証なしで生きるか、帯域外のXSDを検証する。 – kjhughes

+1

これは受け入れられる回答である必要があります。 ty kjhughes、あなたは私にいくつかの不思議を救った。 – user1712447

関連する問題