1

XML次のパターンに従うドキュメントがある場合XSDs、これらのドキュメントを生成し、コメントを注釈タグに変換するにはどうすればよいですか?

<ELEMENT1>

  <!--
  documentation text ....
  -->
  <ELEMENT2>
    <ELEMENT3>ABC</ELEMENT3>
  </ELEMENT2>

  <!--
  documentation text ....
  -->
  <ELEMENT4>
    <ELEMENT5>0534564117</ELEMENT5>
    <ELEMENT6>123456</ELEMENT6>
    <ELEMENT7>090314b4-fc7d-42c5-b382-a5b745671ee32b</ELEMENT7>
  </ELEMENT4>

</ELEMENT1>
4

1 に答える 1

2

あなたの質問から、ここで何が難しいと感じているかを判断するのは困難です。何を試しましたか?考えたことはあるが、何らかの理由でまだ試していないことはありますか? その理由は何だったのですか?

XML ドキュメントのコレクションからドキュメント グラマー (DTD、Relax NG スキーマ、または XSD スキーマの形式) を生成するためのツールは多数あります。「文法誘導」または「文法推論」と「XML」を検索すると、いくつかのツールが表示されます (Stack Overflow で、XML Trangまたはxml xsd.exeXML 指向の開発環境に、サンプルからスキーマを生成する機能が含まれていることは珍しくありません (多くの場合、内部で同じオープンソース ツールを使用しています)。ただし、いくつかのサンプルから一般的な文法を推測しようとするのは、このようなツールの性質です。つまり、入力ファイルのいずれかのコメントが、スキーマに含める価値があるほど興味深いまたは重要である可能性は低いことを意味します。そのため、入力内のコメントを出力内の注釈にコピーするためのスイッチを備えた市販の文法推論ツールを見つけることはまずありません。

一方、質問の見出しは、XML 入力から XSD スキーマを生成する方法を既に知っているかのように聞こえ、XML 内のコメントをプロセスにアクセス可能にする方法についてのみアドバイスを求めているようです。それがスキーマを生成しています。その場合の答えは、コメントにアクセスできるプログラミング言語または XML パーサー インターフェイスを使用することです。XSLT または SAX2 は当然の選択です。(一方、XML インスタンスのコレクションから有用なスキーマを生成する方法を知っているほど XML をよく知っている人が、XML 入力のコメントを読み取る方法について疑問を抱く可能性はほとんどありません。問題。)

あなたの選択肢は次のとおりです。

  • SAX2 インターフェイス (またはコメントを公開するその他のパーサー API) を使用して、選択したプログラミング言語で XML インスタンスを読み取り、スキーマを生成します。
  • スキーマ ジェネレーターを XSLT で記述し、<xsl:template match="comment()"> ... </xsl:template>テンプレートを使用して入力内のコメントを処理し、xs:documentation出力として生成される XSD スキーマ ドキュメント内の要素を生成します。
  • 市販のスキーマ ジェネレーター (Trang など) を使用してデータのスキーマ ドキュメントを生成し、XSLT スタイルシートまたは SAX フィルターを記述して XSD スキーマ ドキュメントと XML 入力を再読み取りし、 XML 入力、コメントが関連する宣言を識別し、XML 入力からのコメントを含む要素を適切なポイントに挿入しxs:annotationて、スキーマ ドキュメントを再度書き出します。xs:documentation
于 2013-01-30T15:15:32.170 に答える