Я использую XSLT 2.0 для извлечения данных из XHTML-файлов. Я хочу избавиться от всех атрибутов, кроме href
. Эта версия преобразования идентичности удаляет все атрибуты. Обратите внимание, что он не копирует никаких атрибутов, потому что @*
не используется.Атрибуты фильтрации XSLT 2.0 с преобразованием идентичности
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
Я попытался с помощью @*
и фильтрации для href
, но он не работает.
<xsl:template match="node()|@*[href]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
Я получаю сообщение The child axis starting at an attribute node will never select anything.
Я также попытался использовать другие конструкции, как @*[@href]
и @*[[email protected]*]
, и я получаю такое же сообщение. Я использую Saxon HE 9.5.1.4.
Могу ли я выборочно копировать только определенные атрибуты (и их значения) с преобразованием идентичности или мне нужно сделать это по-другому?
Ваша конструкция '@ * [HREF]' означает "выбрать все атрибуты, которые имеют HREF элемента, как ребенок". Предупреждение Саксона говорит вам, что у атрибутов нет элементарных детей, поэтому это не разумная вещь, о которой нужно просить. –