0

私はdtdファイルを持っています。このファイルでは、いくつかの属性が要素に必要です。

<!ELEMENT NAME (LASTNAME)>
<!ATTLIST NAME SEX CDATA #REQUIRED >

属性が存在する場合、ファイルの解析中にエラーがスローされ、解析が終了します。これは問題ありません。

しかし、NAME 要素が次のような場合はどうなるでしょうか。

<NAME SEX="">
 <LASTNAME>Doe</LASTNAME>
</NAME>

属性はあるが値がない場所。

dtd に対して xml を解析しているときにこれを確認するにはどうすればよいですか。

4

2 に答える 2

0

これは、空の値のチェックを提供する DTD の機能を超えています。

できることは 2 つあります
。 1. 「NoData」などのデフォルト値を追加します
。 2. XML に minLength を追加します。minLength="2"

しかし、monocadad が提案したように、HasValue を使用して値を確認できます。

于 2013-03-29T17:49:26.733 に答える
0

ここをXmlReader.HasValue 参照してください

またはXmlValidatingReader.HasValue こちら を参照してください

アップデート:

var elemList = doc.GetElementsByTagName(...);
for (int i = 0; i < elemList.Count; i++)
{
     var attrVal = elemList[i].Attributes["Name"].Value;
     if (null == attrVal)
     {
         // no value
     } 
}  
于 2013-03-29T17:34:31.343 に答える