実際には、要素にPCDATAと他の要素の両方を含めることができます。そのようなコンテンツモデルは混合と呼ばれます。#PCDATAをDTDに配置混合コンテンツ
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT, NUMBER, PRICE)>
<!ELEMENT PRODUCT (#PCDATA | PRODUCT_ID)*>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ELEMENT PRODUCT_ID (#PCDATA)>
]>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LAST_NAME>Weber</LAST_NAME>
<FIRST_NAME>Bill</FIRST_NAME>
</NAME>
<DATE>October 25, 2003</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Asparagus</PRODUCT>
<NUMBER>12</NUMBER>
<PRICE>$2.95</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Lettuce</PRODUCT>
<NUMBER>6</NUMBER>
<PRICE>$11.50</PRICE>
</ITEM>
</ORDERS>
</CUSTOMER>
</DOCUMENT>
バリ(.NET XMLパーサー、MSXML SAXを使用して、ファイルの正しさを確認するとき、私は気づいた:混合コンテンツモデルを指定するには、ちょうどあなたができるようにしたい子要素と一緒に#PCDATAを一覧表示します、MSXML DOM、Javaビルドイン)、#PCDATA
がリストの先頭にある場合 - チェックが合格になります。 #PCDATAがメンバーの前にある場合は、検証エラーがあります。
なぜ#PCDATA
の要素が最初に必ず必要なのでしょうか?
ありがとうございました! なぜ '' 'S? '#PCDATA''''は最初に( '' '' PCDATA''''の前に)滞在しますか?タグが最初にあるように見えます。 –
いいえ - 'S?'は* white-space *の略です。 – potame
@patame。 OK。私は参照してください。ありがとう! –