web-dev-qa-db-ja.com

XMLの条件付き属性-最も簡潔なソリューション?

私は、条件付きプロファイリング(XMLのチャンクに属性をタグ付けする方法)を設定する必要があります。これは、そのXMLのサブセットを抽出するための条件付き値として使用されます。別の定義/例を見てください。 DITAプロファイリング XMLは、印刷された本と同等のドキュメントです。つまり、間接的にであっても、人間がよく見るドキュメントです。したがって、私はここでいくつかの要件を見ています:

  1. 値リストを簡潔に保つ-ドキュメントの読みやすさに影響を与えないようにする
  2. 標準のXMLツールで処理できる-スペースで区切られた属性内のリストはおそらくまだ問題ありませんが、このために正規表現を使いすぎないようにします
  3. サードパーティを含むさまざまなユーザーにとって、どのコンテンツがどこに行くのかが明らかである
  4. 今後のメンテナンスが容易

したがって、1つの簡単な解決策は次のとおりです。

<test condition="print epub"/>
<test condition="web kf8 app mobi"/>

これに関する問題:

  1. リストが大きくなるにつれて、属性の値は少し冗長になる可能性があります
  2. このシナリオと他のすべてのシナリオの場合でも、すべての値を明示的に述べる必要があります

したがって、私は次のような他のアプローチも検討しています。

  1. 「+」および「-」修飾子を使用して、Apache htaccessスタイルを使用して、プロファイリングのデフォルトのカスケードをオーバーライドします。デフォルトでは、すべてのコンテンツがどこにでも移動します。ビットを除外する場合は、「-Kindle」とだけ言います。ツリー全体を解析する必要があり、編集ツールではサポートされておらず、属性値をもう少し深く正規表現する必要があります...
  2. 中間ファイルを使用して、「その他」や「非印刷」などの値のグループを定義する DITAでのこの例 。簡潔なXMLだけでなく、ドキュメントごとに異なるグループ化と値を使用できますが、特定のレベルの抽象化が作成されるため、サードパーティにとっては少しわかりにくくなる可能性がありますか?

まとめると、そのようなXMLを受け取って、それを処理するタスクが課せられた場合、どちらのオプションを受け取りますか?そのような経験があれば、ビルドなどの無関係な領域でも、遠慮なくコメントしてください!

6
Lech Rzedzicki

ConditionCondition1など、複数の属性を使用することもできます。これにより、属性のカテゴリを作成できます。次に、ある属性の下にリストされ、別の属性の下にリストされないものを探していることがわかっている場合は、1つの属性を検索できます。これにより、処理が少し高速化されます。

..単なる提案ですが、あなたが何を話しているのかよくわかりませんが、私はそれをそこに捨てると思いました。

1
Malachi