1

我有以下 XML,我想提取所有title_en属性。

<quiz>
    <question title_de="Seit wann wird Appenzeller® Käse hergestellt?" 
              title_fr="Depuis quand le fromage d’Appenzell est-il fabriqué?" 
              title_en="For how long has Appenzeller cheese been made?" >
        <answer title_de="Über 7 Jahre!" title_fr="Depuis plus de 7 ans !" title_en="For over 7 years !"></answer>
        <answer title_de="Über 70 Jahre!" title_fr="Depuis plus de 70 ans !" title_en="For over 70 years !"></answer>
        <answer title_de="Über 700 Jahre!" title_fr="Depluis plus de 700 ans !" title_en="For over 700 years !"></answer>
    </question>
 </quiz>        

这是我的 XSLT:

  <xsl:template match="answer">
    <tr>
      <td><xsl:value-of select="@title_en"/></td>
    </tr>        
  </xsl:template>   

  <xsl:template match="question">
    <tr>
      <td><xsl:value-of select="@title_en"/></td>
    </tr>        
  </xsl:template> 

我可以从问题或答案中获得属性,但不能从两者中获得。我尝试了所有类型的匹配语句

4

2 回答 2

2

您似乎只包含了 XSLT 的一部分,也许这就是您要寻找的:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/quiz">
        <xsl:apply-templates select="question"/>
    </xsl:template>
    <xsl:template match="answer">
        <tr>
            <td>
                <xsl:value-of select="@title_en"/>
            </td>
        </tr>
    </xsl:template>
    <xsl:template match="question">
        <tr>
            <td>
                <xsl:value-of select="@title_en"/>
                <xsl:apply-templates select="answer"/>
            </td>
        </tr>
    </xsl:template>
</xsl:stylesheet>

我认为您只是缺少<xsl:apply-templates select="answer"/>问题模板中的内容。您将需要修改 HTML,因为它现在在问题 TD 中输出 TR 标签,如下所示:

<tr>
    <td>For how long has Appenzeller cheese been made?<tr>
            <td>For over 7 years !</td>
        </tr>
        <tr>
            <td>For over 70 years !</td>
        </tr>
        <tr>
            <td>For over 700 years !</td>
        </tr>
    </td>
</tr>
于 2013-05-30T13:50:16.213 回答
0

请。尝试类似:

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

  <xsl:template match="quiz">
    <xsl:choose>
      <xsl:when test="question[@title_en]">
        <xsl:apply-templates/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:apply-templates select="question/answer"/>
      </xsl:otherwise>
    </xsl:choose>

  </xsl:template>

  <xsl:template match="answer">
    <tr>
      <td>
        <xsl:value-of select="@title_en"/>
      </td>
    </tr>
  </xsl:template>

  <xsl:template match="question">
    <tr>
      <td>
        <xsl:value-of select="@title_en"/>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>
于 2013-05-30T13:50:20.847 回答