Изменение xslt, чтобы быть агностиком пространства имен

Вы пытались убедиться, что ваши фотографии обрезаны с одинаковым размером, а затем убедитесь, что ширина и высота каждой фотографии имеют одно и то же установленное статическое значение, например:

200px

7
задан pnuts 16 November 2015 в 21:36
поделиться

3 ответа

Вы рассмотрели предварительную обработку Ваших XML-документов?

Вы могли удалить все пространства имен (знать о возможных столкновениях) и затем обработать его с помощью существующего преобразования XSL.

Такой подход имел бы преимущество, что Вы не должны изменять свой XSLT вообще. Это остается читаемым (* [локальное имя () = 'frob'] выглядит настолько ужасным), и удобный в сопровождении.

3
ответ дан 7 December 2019 в 12:25
поделиться

Возможно, я не понимаю Вашей проблемы, но у Вас не могло только быть своего соответствия шаблона (шаблонов) и версия пустого пространства имен и namespaced версия элемента? - Как это:

<xsl:template match="ElementName | NS:ElementName" xmlns:NS="your-namespace">
   ... output ...
</xsl:template>

(Обычно объявление префикса NS было бы помещено в элемент таблицы стилей),

Это - безусловно самая 'чистая' версия мне - у меня есть beeen, использующий, это, чтобы иметь единственную таблицу стилей XSLT обрабатывает все три формата RSS (0.91, 1.0 и 2.0).

1
ответ дан 7 December 2019 в 12:25
поделиться

После дальнейшей консультации кажется, что просто нет никакого простого способа из этого. XSLT должен быть перепроектирован, чтобы быть агностиком пространства имен или использовать xpath-default-namespace атрибут на <xsl:stylesheet> элемент. Если мы хотим сохранить пространство имен входящего документа, но все еще иметь одну работу таблицы стилей с несколькими пространствами имен затем наши шаблоны должны были бы напомнить следующую форму:

<xsl:template match="*[local-name(.)='ElementName']">
   <xsl:element name="{local-name(.)}" xmlns="http://yourURIhere">
      <xsl:value-of select="."/>
   </xsl:element>
</xsl:template/>

и т.д.

1
ответ дан 7 December 2019 в 12:25
поделиться
Другие вопросы по тегам:

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