在下面的XSL中找到以下行:
<xsl:variable name="id" select="concat('CDTableCell', position())" />
<span id="{$id}"
我没有在转换后获得每个跨度的唯一ID。有任何想法吗?显示相同的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>
答案 0 :(得分:1)
我没有在转换后获得每个跨度的唯一ID。
您没有获得唯一ID,因为每个title
是其父cd
的第一个孩子。我建议您使用generate-id()
函数代替position()
(正如您最初的建议)。