Динамически получить путь к элементам xml - PullRequest
1 голос
/ 17 февраля 2012

У меня есть такой xml, и я хочу атрибут, который определен в "заголовке" с использованием файла XSL.

Я хочу получить значение, даже если я изменяю элементы

  • каталог с книгами
  • компакт-диск с книгой

XML:

<catalog>
    <cd>
        <title att="abce"  att2="false">Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>
</catalog>

Я попробовал этот метод, чтобы получить значение att

<xsl:variable name="outermostElementName" select="catalog/cd/title/attribute::att"/>

но это относится только к этому XML, я хочу, чтобы он был родовым

Есть ли способ?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Учитывая ваше текущее значение xsl: variable , я думаю, что вы можете использовать одно из следующих значений для более общих

<xsl:variable name="outermostElementName" select="catalog/*/title/@att" />

или

<xsl:variable name="outermostElementName" select="//title/@att" />

ПервыйПредполагается, что корневой элемент всегда называется catalog .Второй не зависит от узлов-предков, но подхватит элемент title на любом уровне в XML.

0 голосов
/ 17 февраля 2012

Универсальность, которую вы хотите достичь, обеспечивается шаблонами соответствия шаблонов XSLT .

Вы можете просто иметь:

<xsl:template match="title/@att">
  <!-- Your processing here  -->
</xsl:template>

и всякий раз, когда есть инструкция <xsl:apply-templates select="expression"/>, такая, что expression выбирает атрибут title/@att, шаблон выше будет выбран для обработки этого узла атрибута.

Это не зависит от какого-либо другого внешнего контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...