Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 尝试使用XSL应用模板从ID属性中删除尾随空格_Xml_Xslt - Fatal编程技术网

Xml 尝试使用XSL应用模板从ID属性中删除尾随空格

Xml 尝试使用XSL应用模板从ID属性中删除尾随空格,xml,xslt,Xml,Xslt,下面是基本的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 me

下面是基本的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>

无标题文件
D
以下是一些带有典型数据的示例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>
1-1/1
1-1/2 
1-1/3 
注意上面数据元素中的空格。ID属性将拾取此空白,但如果使用ID作为超链接目标,则无法使用。如果我们搜索并删除尾随空格,ID工作正常。这可能很简单,但我想不出来。


<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“
    on
    :将输出中的所有元素放入XHTML命名空间中
  • translate(…)
    :XHTML中类型ID的属性不允许包含
    /
    字符

好极了,好极了,好极了。谢谢这是完美的工作,我甚至调整它的超链接参考了!