XSLT — атрибут идентификатора HTML без кавычек ‹div id=myId›

Для моего выходного HTML-файла я должен создать элемент div с атрибутом id, но значение атрибута не должно быть заключено в кавычки, как в этом примере: <div id=myID>...</div>. Все, что я хочу иметь, отлично работает, когда я использую кавычки, как здесь: <div class="myClass" id="{$myIdVariable}">...</div>. Можно ли сказать Oxygen или Saxon игнорировать такие случаи? Но в конце концов я использую пакет java javax.xml.transform, где я не знаю, могу ли я сказать своим классам, которые я использую, чтобы игнорировать такие вещи. Я был бы очень рад, если бы у кого-то было хорошее решение этой проблемы или даже он мог бы сказать мне, что это невозможно с помощью XSLT...


person Ole    schedule 10.10.2017    source источник
comment
@MartinHonnen: я считаю, что проблема в том, что OP означает кавычки, а не круглые скобки.   -  person kjhughes    schedule 11.10.2017
comment
Соответствующая спецификация W3C (сериализация XSLT 3.0) разрешает этот формат атрибута, но не требует его: рассматривается как зависящий от реализации. Использование сериализатором апострофов или кавычек для разграничения значений атрибутов в методе вывода XML является примером такой детали. Было бы полезно знать, ПОЧЕМУ вы заботитесь о таких деталях.   -  person Michael Kay    schedule 12.10.2017


Ответы (1)


Я считаю, что ваш заголовок должен читаться без кавычек, "", а не без круглых скобок, ().

Нет, XSLT не поможет вам создать некорректный XML. (Для достижения такого эффекта вы можете встать на голову и вывести текст, а не XML, но не делайте этого.) Значения атрибутов должны иметь значение single, ' или двойные кавычки, ", разделители для разметки в формате XML. Даже параметр вывода HTML не будет сериализовать значения атрибутов без разделителей кавычек.


В комментариях @Ole спрашивает:

В принципе вы правы, но я думал, что в HTML5 тоже разрешены атрибуты без кавычек?

Да, в HTML5 разрешены значения атрибутов без кавычек, но вы лучше использовать синтаксис значений атрибутов в одинарных и двойных кавычках, которые также поддерживаются в HTML5, особенно если вы хотите использовать инструменты XML.

person kjhughes    schedule 10.10.2017
comment
В принципе вы правы, но я думал, что в HTML5 тоже разрешены атрибуты без кавычек? Я решил это сейчас, проанализировав вывод XSLT, чтобы удалить кавычки идентификатора. - person Ole; 11.10.2017