- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 xml:
<root xmlns:s="http://example.com/schema">
<foo>
<s:bars>
<s:bar name="normal">bar101</s:bar>
<s:bar name="special">Foobar</s:bar>
<s:bar name="super">FuBar</s:bar>
</s:bars>
</foo>
</root>
我使用以下 xslt 模板输出 bar
元素:
<xsl:template match="root">
<foos>
<xsl:apply-templates select="foo/s:bars"/>
</foos>
</xsl:template>
<xsl:template match="s:bars/s:bar[@name='special' or @name='super']">
<xsl:element name="{@name}">
<xsl:text>special value:</xsl:text>
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="s:bars/s:bar">
<xsl:element name="{@name}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
奇怪的是,当使用 .Net XSLT 处理器时,它会输出以下 xml:
<foos>
<normal>bar101</normal>
<special>Foobar</special>
<super>FuBar</super>
</foos>
显然是 s:bars/s:bar[@name='special' or @name='super']
的模板未使用。我期望得到以下输出:
<foos>
<normal>bar101</normal>
<special>special value:Foobar</special>
<super>special value:FuBar</super>
</foos>
我尝试添加一个额外的模板来选择 bars
<xsl:template match="s:bars">
<xsl:comment>bars</xsl:comment>
<xsl:apply-templates />
</xsl:template>
但这并没有改变结果(但确实将 <!--bars-->
添加到结果中以便调用模板。)
我似乎期待与 template rules 不同的东西或误解他们。不应该选择元素 AND 属性的匹配而不是 ONLY 元素的匹配吗?
我应该如何更改我的 XSLT 模板以使用 .Net XSLT 处理器实现获得我想要的输出?
最佳答案
两个模板具有相同的优先级 0.5
(参见 http://www.w3.org/TR/xslt#conflict )因此 XSLT 处理器可以报告错误或接受最后一个错误。如果您没有收到错误,那么您的 XSLT 处理器已经采用了最后一个匹配的模板规则。因此,要么更改顺序,要么为您希望成为首选的那个设置明确的优先级(例如 <xsl:template match="s:bars/s:bar[@name='special' or @name='super']" priority="5">
)。
关于.net - 为什么没有选择更好匹配的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28250892/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!