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 に答える