Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
在XSLT中使用HTML实体(例如)_Xslt - Fatal编程技术网

在XSLT中使用HTML实体(例如)

在XSLT中使用HTML实体(例如),xslt,Xslt,在XSLT中包含html实体的最佳方式是什么 <xsl:template match="/a/node"> <xsl:value-of select="."/> <xsl:text>&nbsp;</xsl:text> </xsl:template> 这个函数返回一个xsltparserror您可以使用CDATA部分 <xsl:text disable-output-escaping="yes">

在XSLT中包含html实体的最佳方式是什么

<xsl:template match="/a/node">
    <xsl:value-of select="."/>
    <xsl:text>&nbsp;</xsl:text>
</xsl:template>


这个函数返回一个xsltparserror

您可以使用CDATA部分

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

或者您可以在本地DTD中描述:

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

或者只使用
 而不是

这个函数返回一个xsltParserError

是的,这是因为
在XML或XSLT中不像在HTML中那样是预定义的实体


您可以只使用unicode字符,它代表:
 

从xslt中使用html实体的另一种可能性是:

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

默认情况下,XSLT只处理五个基本实体:
lt
gt
apos
quot
amp
。所有其他的都需要定义为提及。

现在有了Unicode,使用命名字符实体通常会适得其反。出于这个原因,我建议使用Unicode字符作为不间断空格,而不是实体。或者,您可以使用实体
和#160
;,而不是命名实体。使用命名实体使XML依赖于内联或外部DTD


文本标记之间的一个空格字符就足够了。

也可以从的第二部分扩展该方法,并获得所有已知字符引用,如下所示:

<!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>&nbsp;&minus;30&deg;</xsl:text>

...
&负的;30度;
方法相比,结果存在一定差异。后者将为所有类型的输出生成字符串文本,如
,甚至是
,这可能与您希望的不同。。。相反,通过
xsl:output
设置为XSLT模板定义实体


因此,使用本地实体解析器防止XSLT引擎从Internet获取字符实体定义可能是明智的。JAXP或显式Xalan-J用户可能需要一个补丁,以便Xalan-J正确使用解析器。有关补丁下载和评论,请参阅我的博客。

谢谢您提供的信息。我写了一篇短篇博文,内容是基于我在的模板中进行XSLT转换时所做的工作

博客帖子在这里:


> Sten Hougaard

< P>我发现所有这些解在空白空间中都产生了一个特征。


使用
为我解决了问题;但是
#x20也可以工作。

有必要使用实体#x160

我在Aku的DOCTYPE方法上运气不佳

在Windows2003服务器上的MSXML转换中,对我起作用的是

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

有点像上面的混合体。谢谢你的贡献者

unicode字符 表示问号和方框,输出未转义的html实体对我来说很有用,谢谢。它不是x160,而是十进制160。这很漂亮-希望它更出名