2014-10-08 2 views
0

В XML У меня есть элементы с атрибутом, который содержит список категорий, например: кошка = «ABCD»xpath 1.0: подмножество соответствует списку атрибутов?

Есть ли возможность с XPath 1.0 (я использую XSLT в Firefox), чтобы вернуть все элементы, где это подмножество категорий соответствует списку?

Например:

подмножество (АС) кошки (ABC) истинной

подмножество (D), кошачьих (АС) ложно

подмножество (АС) кошки (АВ) ложно

Спасибо за вашу помощь.

ответ

1

Вот код, который должен делать в основном то, что вы хотите. Оболочка XSLT - это просто установить переменные.

<xsl:variable name="subset" select="A C" /> 
<xsl:variable name="matches" 
    select="//*[translate($subset, concat(@cat, ' '), '') = '']" /> 

Конечно, вам может потребоваться настроить //* в зависимости от того, какие элементы вы пытаетесь соответствовать.

Объединение пробела в @cat необходимо только в том случае, если у вас могут быть строки подмножества, такие как 'D', которые не содержат пробелов.

Этот код также предполагает, что все названия категорий являются одиночными буквами. Если это не так, дайте мне знать.

+0

В качестве альтернативы, вы можете использовать Saxon CE в Firefox, который обеспечивает XSLT 2.0 (включая XPath 2.0). Тогда у вас будет tokenize() в вашем распоряжении, что поможет, если имена категорий не являются одиночными буквами. – LarsH

0

Спасибо за код.

Фактически, мои категории содержат обычно более одной буквы, и возможно, что существуют подкатегории (например: AB.CD, где точка является разделителем для подкатегории). Было бы хорошо, если я могу найти только одну часть из категории (например:

подмножества (A ZY) кошка (AB ZY) истинного

Смежные вопросы