2011-01-20 3 views
1

私は属性がありますどのように存在する場合 DTDに属性が存在する場合、属性が空でないことをどのように検証できますか?

  • 存在しないことが許さ

    1. 、非空の文字列

    preprocessFile CDATA #IMPLIED 
    

    私は、この属性になりたいの私はこれをDTDで表現していますか?議論を最小限に抑えるために、私はrng/xsdについて知っていると仮定し、この特定のタスクには使用できません。

  • 答えて

    2

    XML DTDを使用して、属性が存在する場合は空であってはならないことを検証する方法はありません。ここで

    は、あなたのオプションは次のとおりです。

    1. あなたはデフォルト値を設定することができます。例えば、preprocessFile CDATA "novalueprovided"
    2. あなたはそれが存在しないようにすることができます(上記の例を参照してください)。

    いずれの場合でも、XML解析コードで属性が「存在しないか空でない」ように強制できます。

    1

    私はDwBに同意します。これはDTDを超えていることに同意します。上記の提案でも、空の文字列を明示的に指定することができます。しかし、DTDではデータ型指定も許可されていないので、文字列データ型だけでなく長さ制限も必要とするため、これは画像内に収まります。もちろん、RNG(RelaxNG)やXML:Schemaのような実際のスキーマ言語は、このようなチェックを容易にサポートします。

    <optional> 
        <attribute name="preprocessFile"> 
         <data type=string"> 
          <minLength value="1"/> 
         </data> 
        </attribute> 
    </optional> 
    
    関連する問題