2

ここに示すように、異常なXML構造を解析したいと思います。テキストの開始と終了をマークするために、2つの自動終了タグが使用されます。したがって、テキストはタグ分割内にありません。

<article>
  <sec>
    <clause id="31"/>This says thirty-one <clause_end/>
    <clause id="32"/>This says thirty-two <clause_end/>
  </sec>
</article>

レガシードキュメントはXMLの個別の階層要件にはあまり適していないため、このスキーマは問題を回避しようとします。

  • XMLの適切な実装と一致していますか?
  • XMLパーサーを適用する方法についてアドバイスはありますか?

元の構造を維持することが望ましいですが、答えが「いいえ」の場合は、次のことを行う必要があります。

  1. 通常どおりテキストにタグを付ける代替スキーマを作成します<clause id="32"> text </clause>
  2. を妨げる他のタグを取り除いて、ドキュメントを整形式にし<clause>ます。見逃しがちなことは何もないと確信しています。

ちなみに、このスキーマが私が思うほど逸脱していると仮定して、開発者を困惑させたくない場合を除いて、ライブファイルにリンクできれば幸いです。;-)

九九からの回答に基づく...

  • XMLの適切な実装と一致していますか?
  • 。。。おそらく
  • XMLパーサーを適用する方法についてアドバイスはありますか?
  • 。。。可能な場合は解析しますが、スキーマのこのレベルでは、文字列を処理する必要があります。

既存の構造を維持するかもしれませんが、1つの小さな拡張機能を導入します。

<article>
  <sec>
    <clause id="31"/>This says thirty-one <clause_end id="31"/>
    <clause id="32"/>This says thirty-two <clause_end id="32"/>
  </sec>
</article>
4

1 に答える 1

1

この種の構造には、他のスキーマ、たとえば、国立医学図書館のタグセット(100万を超えるドキュメントで使用されているのを見たことがありませんが)には間違いなく前例milestone-startありますmilestone-end。とペアにするための属性がに含まれていることに注意してください。これは、解析中にこれらの要素を処理するのに間違いなく役立ちます。IDREFmilestone-endmilestone-start/@id

OSISのコメントを拡張します。これは、この記事から、これが特に興味深くエレガントなもの(または、少なくともこの厄介な問題に対して可能な限りエレガントなソリューション)であることがわかったためです。

OSISで使用される解決策は次のとおりです。一般的なマイルストーンタグも特定の追加タグも使用せず、代わりにマイルストーンおよび非マイルストーン要素とまったく同じタグを使用します。空のXML形式と空でないXML形式です。グループを介してため息をついた。要するに、

  • <q who='paris'>...</q>可能な場合は使用してください。それ以外の場合は使用してください。
  • 使用する<q who='paris' sID='foo'/>...<q eID='foo'/>

このアプローチは、トロイの後に「トロイの木馬のマイルストーン」と呼ばれ、一般的なスキーマ言語ではほぼ無料で提供されます。追加の要素は必要ありません。sID属性とeID属性を追加するだけで、空のコンテンツが許可されていることを確認できます。エルゴは、自由意志または必要に応じてマイルストーンに失敗する要素はありません。同じ宣言が有効であるため、適切な属性が自動的に取得されます。

于 2012-12-01T05:47:15.300 に答える