2017-04-21 12 views
0

は以下のXSLに次の行を検索するためにユニークなIDを生成しないXSL。何か案は?同じIDを表示します。はスパン

XSL

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <html> 
     <head> 
     <script> 
      function mycolorcontrastfx(bgColor) 
      { 
      return '#000000'; 
      } 
     </script> 
     </head> 
     <body> 
     <h2>My CD Collection</h2> 
     <xsl:apply-templates/> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="cd"> 
    <p> 
     <xsl:apply-templates select="title"/> 
     <xsl:apply-templates select="artist"/> 
    </p> 
    </xsl:template> 

    <xsl:template match="title"> 
    Title: 
    // Credit for help: http://stackoverflow.com/a/43546704/139698 
    // As well as W3Schools 
    <xsl:variable name="id" select="concat('CDTableCell', position())" /> 
    <span id="{$id}" style="background-color:#ff0000"> 
     <xsl:value-of select="."/> 
    </span> 
    <br /> 
    <script> 
     var tdElem = document.getElementById('<xsl:value-of select="$id" />') 
     var bgColor = tdElem.style.backgroundColor; 
     var textColor = mycolorcontrastfx(bgColor); 
     tdElem.style.color = textColor; 
    </script> 
    </xsl:template>  
</xsl:stylesheet> 

XML

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="blackorwhite.xslt"?> 
<catalog> 
    <cd> 
    <title>Empire Burlesque</title> 
    </cd> 
    <cd> 
    <title>Hide your heart</title> 
    </cd> 
</catalog> 

答えて

1

変換した後、私はスパンごとに一意のIDを取得していませんよ。

titleのそれぞれがcdの最初の子であるため、ユニークなIDは取得されません。 position()の代わりにgenerate-id()関数を使用することをお勧めします。

関連する問題