Использование переменной и XPATH для выбора значения элемента - PullRequest
1 голос
/ 19 октября 2010

У меня есть следующий фрагмент кода

<xsl:variable name="cId" value="c001" />

<clients>
    <c001>Mario</c001>
    <c002>Luigi</c002>
</clients>

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

Например.переменной cId присваивается значение c001.Есть ли способ для меня выбрать значение c001 с использованием XPATH или XSLT?

Я могу сделать это таким образом, но кажется, что цикл for немного убивает

<xsl:variable name="cId" value="c001" />
<xsl:for-each select="/clients/*">         
    <xsl:variable name="cNode" select="local-name()"/>         
    <xsl:if test="$cNode = $cId">                 
        <xsl:value-of select="."/>
    </xsl:if>
 </xsl:for-each>

Приведенный выше код вернет "Mario"

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

1 Ответ

1 голос
/ 19 октября 2010

Этот вопрос не очень понятен, но вы, вероятно, хотите что-то вроде этого :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:my="my:my">

 <my:catalog>
  <catalog>
    <client>
      <clientid>c001</clientid>
      <clientid>c003</clientid>
      <clientid>c004</clientid>
      <clientid>c005</clientid>
    </client>
  </catalog>
 </my:catalog>

 <xsl:variable name="vCat"
  select="document('')/*/my:catalog"/>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:copy-of select=
  "/clients/*
       [name() = $vCat/catalog/client/clientid]
         /text()
  "/>
 </xsl:template>
</xsl:stylesheet>

, когда это преобразование применяется к следующему документу XML :

<clients>
    <c001>Stars Company</c001>
    <c002>Bold Unregistered</c002>
</clients>

желаемый результат получен :

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