Асинхронная сущность XML вызывает проблемы проверки - как мне избежать этого?
Я генерирую статические HTML-страницы и до сих пор обнаружил, что лучший способ сделать это - использовать XML для Linq, поскольку это делает манипулирование документом очень похожим на JavaScript/jQuery.
До сих пор это работало хорошо, за исключением того, что я добавил кнопку AddThis на свой веб-сайт, и следующая строка вызвала исключение XmlException:
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=xa-51f1474f46ee2d87&async=1&domready=1"></script>
Исключение составляет:
'=' - неожиданный токен. Ожидаемый токен - ";". Линия 69, позиция 114.
Я запустил строку на http://www.xmlvalidation.com/ и получил следующий результат:
110 Ссылка на сущность "async" должна заканчиваться на ';' разделитель.
Я искал в Google несколько минут, пытаясь найти информацию об асинхронном объекте или о том, как я могу его обойти, но во многих документах утверждается, что в XML есть только 5 объектов, например, эта страница: http://www.quackit.com/xml/tutorial/xml_entities.cfm
Как я могу избежать этой сущности?
Дополнительный вопрос: что такое асинхронная сущность и почему ее практически нигде нет в Интернете?
1 ответ
Оказывается, парсеры XML ищут "&" и предполагают, что любой амперсанд является началом сущности. Есть два способа избежать амперсандов в зависимости от контекста.
Можно использовать сущность XML &
Поскольку это URL, следует использовать %26
для кодирования URL
Линия, таким образом, выглядит следующим образом:
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=xa-51f1474f46ee2d87%26async=1%26domready=1"></script>