首页 文章

如何插入 在XSLT中

提问于
浏览
188

我怎么插入

 

在XSLT样式表中,我不断收到此错误:

XML解析错误:未定义的实体

基本上我想在XSLT模板中使用非破坏空格字符 .

11 回答

  • 12

    你也可以用:

    <xsl:value-of select="'&amp;nbsp'"/>
    

    在&之后记住放大器,否则您将收到错误消息

  • 21

    用这个

    <xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;
    

    编辑:Downvoters应该首先验证这是否有效(确实如此,并且是问题的最常见解决方案 . )

  • 25

    人们也可以这样做:

    <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
    
  • 2

    &#160; 效果很好 . 但是,它将以ANSI编码显示其中一个奇怪的字符 . <xsl:text> 对我来说效果最好 .

    <xsl:text> </xsl:text>
    
  • 5

    请改用实体代码 &#160; .

    &nbsp; 是一个HTML "character entity reference" . XML中没有非破坏空间的命名实体,因此您使用代码 &#160; .

    Wikipedia includes a list of XML and HTML entities,你可以看到XML中只有5个"predefined entities",但HTML有200多个 . 我还会指向Creating a space ( ) in XSL,它有很好的答案 .

  • 2

    当您使用以下(没有 disable-output-escaping !)时,您将获得一个不间断的空间:

    <xsl:text>&#160;</xsl:text>

  • -1

    XSLT stylesheets必须是格式良好的XML . 由于 "&nbsp;" 不是the five predefined XML entities之一,因此无法直接包含在样式表中 . 所以回到你的解决方案 "&#160;" 是你应该使用 "&nbsp;" 的完美替代品 .

    例:

    <xsl:value-of select="$txtFName"/>&#160;<xsl:value-of select="$txtLName"/>
    
  • 0

    您可能希望在文件的开头添加此实体的定义(在xml声明下面):

    <!DOCTYPE stylesheet [
    <!ENTITY nbsp  "&#160;" >
    ]>
    

    您还可以添加更多实体,例如Ntilde,Aacute等 .

  • 310

    我试图在HTML表格中的空单元格上显示边框 . 我在空单元格中使用不间断空格的旧技巧不适用于xslt . 我使用了相同效果的换行符 . 我提到这一点,以防你试图使用不间断空间的原因是为了打开单元格边框而给“空”表格单元格提供一些内容 .


  • 29

    尝试使用

    <xsl:text>&#160;</xsl:text>
    

    但它取决于您使用的XSLT处理器:XSLT规范不要求XSLT处理器将其转换为“ &nbsp; ” .

  • 0

    除了victor hugo's answer之外,还可以在XSLT文件中使所有已知的字符引用合法,如下所示:

    <!DOCTYPE stylesheet [
      <!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
          "http://www.w3.org/2003/entities/2007/w3centities-f.ent">
      %w3centities-f;
    ]>
    ...
    <xsl:text>&amp; &nbsp; &ndash;</xsl:text>
    

    <xsl:text disable-output-escaping="yes"> 相比,这种方法的结果也存在一定的差异 . 后者将为所有类型的输出生成字符串文字,如 &nbsp; ,即使对于 <xsl:output method="text"> ,这可能恰好与您希望的不同...相反,通过 <!DOCTYPE ... <!ENTITY ... 获取为XSLT模板定义的实体将始终生成输出与 xsl:output 设置一致 .

    当包含所有字符引用时,使用本地实体解析器来保持XSLT引擎不从Internet获取字符实体定义可能是明智的 . JAXP或显式Xalan-J用户可能需要Xalan-J的补丁才能正确使用解析器 . 有关补丁下载和评论,请参阅我的博客XSLT, entities, Java, Xalan... .

相关问题