这是基本的XSL。我试图提取元素q_DECISION_NUMBER并使用它来创建数据元素和ID属性。但是数据元素包含空格,因此也会拾取空格并生成:id =“23-7 / 16”
我尝试使用normalize-space()和translate(),但在这种情况下都不起作用。
有人有建议吗?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Untitled Document</title>
</head>
<body>
<xsl:apply-templates select="Root"/>
</body>
</html>
</xsl:template>
<xsl:template match="q_DECISION_NUMBER">
<h2 class="q_DECISION_NUMBER"><xsl:attribute name="id">d<xsl:apply-templates/>
</xsl:attribute><xsl:apply-templates/></h2>
</xsl:template>
</xsl:stylesheet>
以下是一些包含典型数据的示例xml,而不是整个XML源:
<Root><DECISION><q_DECISION_NUMBER>1-1/1 </q_DECISION_NUMBER></DECISION>
<DECISION><q_DECISION_NUMBER>1-1/2 </q_DECISION_NUMBER></DECISION>
<DECISION><q_DECISION_NUMBER>1-1/3 </q_DECISION_NUMBER></DECISION>
</Root>
请注意上面数据元素中的空格。 ID属性正在拾取此空白,但如果我们使用ID作为超链接目标,则它不起作用。如果我们搜索并删除尾随空格,则ID工作正常。这可能很简单,但我无法弄清楚。
答案 0 :(得分:1)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" encoding="UTF-8"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Untitled Document</title>
</head>
<body>
<xsl:apply-templates select="Root"/>
</body>
</html>
</xsl:template>
<xsl:template match="q_DECISION_NUMBER">
<h2 class="q_DECISION_NUMBER" id="{concat('d',
translate(normalize-space(.), '/', '-'))}">
<xsl:apply-templates/>
</h2>
</xsl:template>
</xsl:stylesheet>
注意:
xmlns="http://www.w3.org/1999/xhtml"
:将输出中的所有元素放在XHTML命名空间中<xsl:stylesheet>
:XHTML中的ID类型属性不允许包含translate(...)
个字符