質問
(これは切開例であり、XSDが提案複雑なモデルをサポートしていませんでした)私達は性質上、制約を記述するためのメタデータとしてXMLを使用するために探しているあまり詳細に入るがなければ、の検討されている2つのオプションがあります次のXML strucuturesより良い理にかなっている?
オプション1)
<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Property type="string">
<name>quanitity</name>
<contraints>
<contraint type="isRequired">
<value>true</value>
</contraint>
<contraint type="regex">
<value>^[0-9]$</value>
</contraint>
<contraint type="regex">
<value>^[a-zA-Z]$</value>
</contraint>
</contraints>
</Property>
</Properties>
オプション2)
<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Property type="string">
<name>quantity</name>
<IsRequired>true</IsRequired>
<Regex>^[0-9]$</Regex>
<Regex>^[a-zA-Z]$</Regex>
</Property>
</Properties>
解決
XMLジョブが(やることになっているすべてのものをXML後で)データを記述するのより良い仕事をして、そして読みすることがより簡単に、より少ない冗長であるとして
私はおそらくオプション#2のために行くだろう。オプション#1は私の好みのために<name>
と<value>
タグを有することに少し近います。
他のヒント
柔軟性を高めるために、私は#1となるだろう。これは、あなたが制約とカスタムルールの多くの異なる種類を追加することができます。
これは、あなたが/プロセスXMLを解析する方法に依存し、あなたがそれを検証できるようにする場合。
ビューの検証の観点からは、一方で、タグの内容は、特定のタイプ(例えば、正規表現を)持っているだろうとオプション2は、より良い選択である(あなたは、コンパイル時にXSDを経由して自動検証を検討している場合) <value>
タグは正しい内容をチェックすることができませんでした。
あなたがSAXパーサを使用している場合は、タグに基づいて状態を切り替えることができても、私はおそらく、構文解析および処理に関するオプション2となるだろう。
個人的に、私は最初のものでいいと思う、私は中にエラーチェックを解析し、実行するコードを記述する方が簡単だろうと思う。それに加えて、意味的に私の脳に、より理にかなっています。
それは言った、私はどちらかは結構です、あなたはそれは個人の選択 "だ見つけることだと思います。
所属していません StackOverflow