2017-05-10 1 views
1

私の頭を包むことはできません - xmllintはこのdtd構文、特にet_snote行について不平を言っています。 - 私はここで何が間違っていますか?このdtd構文で何が問題になっていますか?

<!ELEMENT et_snote (is_required?, (#PCDATA | vis? | ri?)*) > 
<!ELEMENT is_required (#PCDATA) > 

私はこのエラーを取得する:

schema.dtd:166: parser error : expected '>' 
<!ELEMENT et_snote (is_required?, (#PCDATA | vis? | ri?)+) > 

これは私が実行コマンドです:

xmllint --noout --nowarning --nonet --dtdvalid schema.dtd my.xml 

答えて

2

あなたが定義することによりcannot have character data要素の内容、などet_snoteの種類を宣言しました、 #PCDATAを削除するか、タイプを混合コンテンツに変更してください。

+0

私は混合コンテンツとして宣言する心をいけない - どのように私は 'is_required'タグは常にet_snote''下の最初の要素であることを確認してしまう府? – Dannyboy

+0

できません。注文を指定する場合は、文字データを許可することはできません。必要な場合は、別の要素に文字データをラップします。 – user657267

+0

le sigh。ありがとう! – Dannyboy

-1

|を既に使用している場合は、?のようなものを使用することはできません。 「3つの要素のいずれかを使用することはできますが、2番目または3番目の要素を使用している場合は省略することができます」という理由から、意味をなさないだけです。私はあなたが希望ですか?and ri`オプションです。あなたは選択肢を与え、一つだけの要素をしたいされているので、あなただけ言うことができる:

<!ELEMENT et_snode (is_required?, (#PCDATA | vis | ri)+) > 
関連する問題