2

あまり詳細に立ち入ることなく、プロパティの制約を記述するためのメタデータとしてXMLを使用することを検討しています(これは削減例であり、XSDは提案された複雑なモデルをサポートしていませんでした)。構造はより理にかなっていますか?

オプション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>
4

4 に答える 4

1

柔軟性のために、私は#1を選びます。これにより、さまざまなタイプの制約とカスタムルールを追加できます。

于 2009-07-01T14:07:59.873 に答える
1

XMLジョブはデータをより適切に記述するため(結局のところXMLが行うことになっていることです)、したがって読みやすく、冗長性が少ないため、おそらくオプション#2を選択します。オプション#1は、私の好みに合わせ<name>てタグを付けることに少し近いです。<value>

于 2009-07-01T14:10:02.303 に答える
1

これは、XMLをどのように解析/処理するか、およびXMLを検証できるようにするかどうかによって異なります。

検証の観点から(コンパイル時にXSDを介した自動検証を検討している場合)、タグのコンテンツは特定のタイプ(正規表現など)を持ちますが、タグは可能であるため、オプション2の方が適しています<value>。正しい内容がチェックされていません。

また、SAXパーサーを使用している場合は、タグに基づいて状態を切り替えることができるため、解析と処理に関してオプション2を使用することになるでしょう。

于 2009-07-01T14:10:22.787 に答える
0

個人的には、最初のものを使用します。解析してエラーチェックインを行うコードを作成する方が簡単だと思います。さらに、意味的には私の脳にとってより理にかなっています。

そうは言っても、それは「個人的な選択」であることがわかると思います。どちらでも構いません。

于 2009-07-01T14:09:54.693 に答える