2016-07-15 6 views
0

ファースト - 私の悪い英語を申し訳ありません。xsltのHTML lang属性(ウェブサイトの言語に依存)

ウェブサイトでどの言語が選択されているかに依存してhtmlオープンタグにlang属性を追加する必要があります。

<xsl:template match="root"> 
     <html> 
      <head> 
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
       <title> 
        <xsl:choose> 
         <xsl:when test="Document/@title!=''"> 
          <xsl:value-of select="Document/@title" disable-output-escaping="yes"/> 
         </xsl:when> 
         <xsl:when test="ContentList/@title!=''"> 
          <xsl:value-of select="ContentList/@title" disable-output-escaping="yes"/> 
         </xsl:when> 
         <xsl:otherwise> 
          <xsl:value-of select="@ContentHeader" disable-output-escaping="yes"/>- <xsl:value-of select="@title" disable-output-escaping="yes"/> - <xsl:value-of select="@slogan" disable-output-escaping="yes"/></xsl:otherwise> 
</xsl:choose> 

私はこの条件

  <xsl:choose> 
       <xsl:when test="@lang='rus'"> 
        <html lang="ru"> 
       </xsl:when> 
       <xsl:when test="@lang='rom'"> 
        <html lang="ro"> 
       </xsl:when> 
       <xsl:otherwise> 
        <html lang="en"> 
       </xsl:otherwise> 
      </xsl:choose> 

作ってみる。しかし、それは動作しません:それは今どのように見えるか 。

+0

では、[MCVE]を投稿してください。 –

+0

そして、「うまくいきません」と言っても、どこを助けてくれるのか教えてくれません。あなたは 'lang = "en"'を取得しますか?あなたは交換を一切受け取りますか? –

答えて

0

XSLTスタイルシートは整形式のXML文書である必要があります。これは、要素が適切にネストされていなければならないことを意味します。この例では、3つの開始タグと一致する終了タグを使用しています。タグを生成するのではなく、構造を生成するという観点から考える。 @へ

<html> 
    <xsl:choose> 
     <xsl:when test="@lang='rus'"> 
      <xsl: attribute name="lang" 
       value="ru"/> 
     </xsl:when> 
     <xsl:when test="@lang='rom'"> 
      <xsl: attribute name="lang" 
       value="ro"/> 
     </xsl:when> 
     <xsl: otherwise> 
      <xsl: attribute name="lang" 
       value="en"/> 
     </xsl: otherwise> 
    </xsl:choose> 

    <!-- etc... --> 
+0

"*簡単な解決策は属性のみを条件付きにすることです*"実際は、属性の**値**のみを条件付きにする方が簡単です(短くなります)。 –

+0

@ michael.hor257k:解決策を示す回答を投稿してください。私はこれが初心者には明らかになると感じました。 De gustibus ... – keshlam

+0

私がそうするかもしれない - OPが再現可能な例を投稿した後。 –

0

ありがとう:

は(他の問題がありますが、私は今、それらについて屁理屈したくない)元のスタイルシートから始めて、簡単な解決策は、専用の属性条件を作ることですkeshlam

これは、ソリューション

<html> 
      <xsl:choose> 
       <xsl:when test="@lang='rus'"> 
        <xsl:attribute name="lang">ru</xsl:attribute> 
       </xsl:when> 
       <xsl:when test="@lang='rom'"> 
       <xsl:attribute name="lang">ro</xsl:attribute> 
       </xsl:when> 
       <xsl:otherwise> 
        <xsl:attribute name="lang">en</xsl:attribute> 
       </xsl:otherwise> 
      </xsl:choose> 
関連する問題