Вопрос обхода XSL (с ошибкой сервера :) - PullRequest
0 голосов
/ 14 мая 2009

У меня, как мне кажется, интересная ситуация под рукой. У меня есть XML в гараже, и я преобразовываю его (используя XSL) в HTML.

АВТОМОБИЛЬ XML:

<car>
   <licensePlate>Car001</licensePlate>
   <feature>
      <color>Blue</color>
      <fuel>Unleaded</fuel>
   <feature>
</car>

Я только хочу распечатать <color> & <fuel>, но хочу установить <licensePlate> как href в HTML-ссылке.

АВТОМОБИЛЬ XSL:

<xsl:template match="car">
   <tr>
      <xsl:apply-templates select="licensePlate"/>
      <xsl:apply-templates select="feature"/>
   </tr>
</xsl:template>

<xsl:template match="feature">
   <td>
      <a href="{preceding-sibling::licensePlate/text()}>
          <xsl:apply-templates select="color"/>
      </a>
   </td>
   <td><xsl:apply-templates select="fuel"/></td>
</xsl:template>

Это позволяет мне достичь своей цели установки тега в качестве значения href.

НО возникает проблема ... все значения licensePlate выводятся на экран.

Может кто-нибудь порекомендовать, как предотвратить печать на экране?

Я попытался закомментировать <xsl:apply-templates select="licensePlate"/>, но я думаю, что это влияет на оператор preceeding-sibling::, когда я получаю ошибку

Я также получил эту ошибку при попытке применить CSS display:none.

Спасибо за ваше время и терпение, Lucas

Ответы [ 3 ]

1 голос
/ 14 мая 2009

Вы должны закомментировать <xsl:apply-templates select="licensePlate"/>. Это не может быть причиной ошибки, если вы правильно ее закомментировали.

Также: <a href="{preceding-sibling::licensePlate/text()}> <- yuikes! </p>

<a href="{../licensePlate}>!

0 голосов
/ 14 мая 2009

Вот один из способов сделать это. Я предполагаю, что у вас уже есть шаблоны для цвета и топлива.

<xsl:template match="car">
    <tr>
        <xsl:apply-templates select="feature"/>
    </tr>
</xsl:template>

<xsl:template match="feature">
    <td>
        <a>
            <xsl:param name="href">
                <xsl:value-of select="../licensePlate"/>
            </xsl:param>
            <xsl:apply-templates select="color"/>
        </a>
    </td>
    <td>
        <xsl:apply-templates select="fuel"/>
    </td>
</xsl:template>
0 голосов
/ 14 мая 2009
<xsl:template match="car">
  <tr>
    <xsl:apply-templates select="feature" />
  </tr>
</xsl:template>

<xsl:template match="feature">
   <td>
      <a href="{../licensePlate}">
        <xsl:value-of select="color" />
      </a>
   </td>
   <td>
      <xsl:value-of select="fuel" />
   </td>
</xsl:template>

будет производить:

<tr>
  <td>
    <a href="Car001">Blue</a>
  </td>
  <td>Unleaded</td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...