dtd и смешанный контент - PullRequest
       39

dtd и смешанный контент

1 голос
/ 13 декабря 2010

Кто-нибудь знает, как для элемента содержимого микса (в dtd) есть необходимость добавить "*" в конце?

Например: <!ELEMENT note (#PCDATA|to|from|header|message)*>

Яссылаясь на случай, когда я не хочу повторять что-либо снова ... Я просто хочу иметь возможность выбирать между #PCDATA и другими элементами.

Я знаю, что если я опущу "*" вконец декларации Я получу плохую декларацию DTD ... Но - я понятия не имею, что является причиной этого ...

Кто-нибудь знает почему?

Ответы [ 2 ]

6 голосов
/ 14 декабря 2010

Вы попали под это ограничение, потому что смешанная модель контента может ограничивать только то, какие элементы встречаются, а не их порядок или количество.Боюсь, это требуется самой XML-спецификацией .

Смешанный контент жесткий Боюсь.Модель была разработана с учетом документов - это имеет смысл, когда вы думаете о встроенном тексте, но не во многих других случаях.Если у вас есть выбор, лучшая практика предложит вам создать элемент, содержащий ваши PCDATA.Если вы не можете, то я боюсь, что вы застряли с ограничениями моделей смешанного контента (боюсь, использование другого языка схем тоже мало поможет).

0 голосов
/ 13 декабря 2010

Вы хотите использовать ЛЮБОЙ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE things [
    <!ELEMENT things ANY>
]>
<things>
    <person name="a" />
    <cats />
    <dogs />
    <animals><a rel="gogo" /></animals>
</things>

Кроме того, * является оператором от нуля до нескольких случаев.Так что (element|element2)* говорит либо или / и

...