XSLT - Соответствуйте переменному элементу в предикате

<xsl:apply-templates select="element[child='Yes']">

Хорошо работает, но я хотел бы использовать

<xsl:apply-templates select="element[$childElementName='Yes']">

таким образом, я могу использовать переменную для определения узла.

Например,

<xsl:apply-templates select="theList/entity[Central='Yes']">

хорошо работает против:

<?xml version="1.0" encoding="utf-8"?>
<theList>
  <entity>
    <Business-Name>Company 1</Business-Name>
    <Phone-Number>123456</Phone-Number>
    <Central>Yes</Central>
    <region1>No</region1>
    <region2>Yes</region2>
    <region3>No</region3>
    <Northern>No</Northern>
  </entity>
  <entity>
    <Business-Name>Company 2</Business-Name>
    <Phone-Number>123456</Phone-Number>
    <Central>No</Central>
    <region1>Yes</region1>
    <region2>No</region2>
    <region3>No</region3>
    <Northern>Yes</Northern>
  </entity>
  <entity>
    <Business-Name>Company 3</Business-Name>
    <Phone-Number>123456</Phone-Number>
    <Central>Yes</Central>
    <region1>No</region1>
    <region2>No</region2>
    <region3>No</region3>
    <Northern>No</Northern>
  </entity>
  <entity>
    <Business-Name>Company 4</Business-Name>
    <Phone-Number>123456</Phone-Number>
    <Central>No</Central>
    <region1>No</region1>
    <region2>No</region2>
    <region3>No</region3>
    <Northern>No</Northern>
  </entity>
</theList>

Но я не хочу трудно кодировать дочернее имя элемента.

Какие-либо предложения?

Спасибо Tim для ответа:

<xsl:apply-templates select="theList/entity[child::*[name()=$childElement]='Yes']" />
5
задан John Hartley 28 July 2010 в 23:18
поделиться