Хорошо сформированный XML? XML-ссылки в именах тегов и атрибутов

Я искал, пытаясь подтвердить свое прочтение спецификации XML. Моя интерпретация заключается в том, что предопределенные сущности и числовые ссылки на символы не допускаются в именах тегов и именах атрибутов, например, это не допускается спецификацией XML 1.0.

<root>
<test&apos;&#x27;&#39;tag test&apos;&#x27;&#39;attribute="one"/>
</root>

Однако у меня есть один анализатор, который возвращает test'''tag для имени тега и test'''attribute для имени атрибута, в то время как другой анализатор возвращает test&apos;&#x27;&#39;tag для имени тега и test&apos;&#x27;&#39;attribute для имени атрибута.

Какой парсер правильный? Или они оба не правы (т. Е. Они должны генерировать правильно сформированную ошибку)?

Спасибо!

xml
4 голоса | спросил ScottProuty 8 PMpWed, 08 Apr 2009 21:53:22 +040053Wednesday 2009, 21:53:22

3 ответа


0

Это очень просто: никакие сущности нельзя использовать в именах . Оба "парсера" здесь не правы. Спецификация XML довольно четко определяет это - здесь нет скрытых правил по умолчанию; если какая-то конструкция не включена, это не разрешено.

Сущности могут использоваться только внутри обычного символьного содержимого и значений атрибутов. И они могут быть включены в некоторые другие места (комментарии, инструкции обработки, подмножества DTD), но не будут расширены (т.е. не будут распознаны как объекты).

ответил StaxMan 9 AMpThu, 09 Apr 2009 00:40:27 +040040Thursday 2009, 00:40:27
0

Мне кажется, что они оба не правы. Согласно спецификации , только следующие символы должны быть в начальный тег:

":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

XMLSpy, конечно, тоже не в восторге. Ни <Oxygen />.

И ... просто для примера ... вот что .NET должен был сказать по этому поводу:

The '&' character, hexadecimal value 0x26, cannot be included in a name. Line 1, position 12.

Какие парсеры вы используете?

ответил dommer 8 PMpWed, 08 Apr 2009 22:42:55 +040042Wednesday 2009, 22:42:55
0

В поисках на w3.org я нашел следующие соответствующие части:

  

[41] Attribute :: = Name Eq AttValue [VC: тип значения атрибута] [WFC: нет ссылок на внешние объекты] [WFC: нет <в значениях атрибутов]

[WFC: нет ссылок на внешние объекты] ссылки на:

  

Правильное ограничение: нет ссылок на внешние объекты
  Значения атрибутов НЕ ДОЛЖНЫ содержать прямые или косвенные ссылки на внешние объекты.

Имя ссылается на:

  

[5] Name :: = NameStartChar (NameChar) *

     

[4] NameStartChar :: = ":" | [A-Z] | "_" | [a-z] | [# xC0- # xD6] | [# xD8- # xF6] | [# xF8- # x2FF] | [# x370- # x37D] | [# x37F- # x1FFF] | [# x200C- # x200D] | [# x2070- # x218F] | [# x2C00- # x2FEF] | [# x3001- # xD7FF] | [# xF900- # xFDCF] | [# xFDF0- # xFFFD] | [# x10000- # xEFFFF]

     

[4a] NameChar :: = NameStartChar | "-" | "" | [0-9] | # xB7 | [# x0300- # x036F] | [# X203F- # x2040]

Да, это так же ясно, как грязь! Моя интерпретация этого состояла бы в том, что вы можете использовать шестнадцатеричные ссылки на сущности, если они попадают в диапазоны, указанные выше, но вы не можете использовать предварительно определенные ссылки.

Я ожидал бы правильно сформированной ошибки, когда имена не соответствуют этому.

ответил 17 of 26 8 PMpWed, 08 Apr 2009 22:42:29 +040042Wednesday 2009, 22:42:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132