Xslt 如何在<;xsl:attribute>;文本?
我的XSLT样式表生成HTML,其中一些元素可能包含Xslt 如何在<;xsl:attribute>;文本?,xslt,Xslt,我的XSLT样式表生成HTML,其中一些元素可能包含data-…属性,以将附加数据传递给框架。例如,我使用以下代码生成一个元素: 在这种情况下,如何为生成标记文本 (有些关联:和。) 答案 谢谢你的回答!虽然我认为这提供了技术上正确的解决方案来正确实现我所需要的,但我认为这更直接地解决了我的问题。您不能在xsl:attribute内生成标记,因为XML不允许在属性内生成未经扫描的标记。 具体地说,forAttValue禁止在属性值中放置未缩放的标记,但是-如果将尖括号(以及引号中的任何符号和引号
data-…
属性,以将附加数据传递给框架。例如,我使用以下代码生成一个元素:
在这种情况下,如何为
生成标记文本
(有些关联:和。)
答案
谢谢你的回答!虽然我认为这提供了技术上正确的解决方案来正确实现我所需要的,但我认为这更直接地解决了我的问题。您不能在xsl:attribute
内生成标记,因为XML不允许在属性内生成未经扫描的标记。
具体地说,for
AttValue
禁止在属性值中放置未缩放的标记,但是-如果将尖括号(以及引号中的任何符号和引号)转义为实体引用,引导程序仍将在弹出框中正确呈现html
<a href="#" data-content="This is <em>some</em> additional <a href='#'>content</a>.">Link</a>
要在XSLT中做到这一点,最简单的方法是使用CDATA部分:
<xsl:attribute name="data-content"
><![CDATA[This is <em>some</em> additional content
& a <a href="#">link</a>.]]></xsl:attribute>
一些附加内容
&;a.]>
和序列化程序将在必要时为您脱机。
< P>不是这样做的“官方”方式,但当使用它处理XML和XSLT样式表时,请考虑在样式表中使用。这些自定义元素允许您在处理过程中元素匹配时运行Python代码,并且该代码可以修改/编辑输出文档的某些部分。我认为属性的值中不允许使用未经扫描的标记,是吗?如果您的输出是XML,则肯定不是。对,不是。请参阅。我认为HTML规范在这里更相关,因为OP正在生成:“属性值可能只包含字母(a-z和a-z)、数字(0-9)、连字符(ASCII十进制45)、句点(ASCII十进制46)、下划线(ASCII十进制95)和冒号(ASCII十进制58)。”@michael.hor257k:Hm.你是说Bootstrap对数据内容
属性的使用是无效的HTML吗?@Jens你能指出一个例子,他们在数据内容
属性中使用标记吗?我在你链接到的页面上没有看到。@michael.hor257k:我刚刚添加了对其他三个问题的引用,所有这些问题都有嵌入该属性的HTML示例(尤其是一个)。@Jens,是的,我更喜欢你的第一个示例,尤其是当你需要大量标记时。除了不属于XML或HTML属性值的标记外,单独的div
更易于创建、阅读和编辑。有趣的是,小提琴部分起作用了:
不显示,但
显示。@Jens确实如此,我尝试将em改为strong,并且显示为粗体,因此看起来只是某些标记。或者这可能是bootstrap的css中的某些内容。@Jens好吧,这是JSFIDLE的错误-它使em
呈现出了预期的效果。为了让这更有趣,我可以使用几个CDATA
部分来包装其他XSLT元素。例如:
AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
Reference ::= EntityRef | CharRef
EntityRef ::= '&' Name ';'
CharRef ::= '&#' [0-9]+ ';'
| '&#x' [0-9a-fA-F]+ ';'
<a href="#" data-content="This is <em>some</em> additional <a href='#'>content</a>.">Link</a>
<xsl:attribute name="data-content"
><![CDATA[This is <em>some</em> additional content
& a <a href="#">link</a>.]]></xsl:attribute>