2014-12-01 55 views
0

我的XML-DTD無法驗證此代碼:如何通過DTD驗證中間文本?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE init[ 
<!ELEMENT init(a)> 
<!ELEMENT a(b,c,(d|e))> 
<!ELEMENT b (#PCDATA)> 
<!ELEMENT c (#PCDATA)> 
<!ELEMENT d (#PCDATA)> 
<!ELEMENT e (#PCDATA)> 
]> 
<init> 
<a> 
dolor 
<b> Lorem </b> 
dolor 
<c> Ipsum </c> 
<d> hi </d> 
dolor 
</a> 
</init> 

我如何可以驗證通過DTD中間的文字?

PD: 對不起,我編輯了這個問題 - 我的問題沒有解決。

PD2: 我用這個驗證的DTD HTML:http://validator.w3.org/check

回答

1

我看到一對夫婦的事情:

  1. 你需要你的元素名稱和內容模型之間加空格(左插入語)。
  2. 您需要聲明a作爲mixed content模型。

例...

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE init [ 
<!ELEMENT init (a)> 
<!ELEMENT a (#PCDATA|b|c)*> 
<!ELEMENT b (#PCDATA)> 
<!ELEMENT c (#PCDATA)> 
]> 
<init> 
    <a> 
     dolor 
     <b> Lorem </b> 
     dolor 
     <c> Ipsum </c> 
     dolor 
    </a> 
</init> 

例2 ...

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE init [ 
<!ELEMENT init (a)> 
<!ELEMENT a (#PCDATA|b|c|d|e)*> 
<!ELEMENT b (#PCDATA)> 
<!ELEMENT c (#PCDATA)> 
<!ELEMENT d (#PCDATA)> 
<!ELEMENT e (#PCDATA)> 
]> 
<init> 
    <a> 
     dolor 
     <b> Lorem </b> 
     dolor 
     <c> Ipsum </c> 
     <d> hi </d> 
     dolor 
    </a> 
</init> 
+0

我改的問題,而是你的解決方案是很好的情況了。 – CodeNoob 2014-12-01 21:12:43

+0

@CodeNoob - 'a'仍然是一個混合內容模型,必須以某種方式聲明。我添加了第二個例子。有關更多信息,請參閱http://www.w3.org/TR/xml11/#sec-mixed-content。 – 2014-12-01 22:14:20

+0

好的,我讀了鏈接,但是很好的解決方案。 – CodeNoob 2014-12-01 22:53:52