问题XSLT输出
回答
您可以使用xsl:choose
:
<td>
<xsl:choose>
<xsl:when test="function = 'true'">@</xsl:when>
<xsl:otherwise> </xsl:otherwise>
</xsl:choose>
</td>
它不工作...&32是什么?/它是抛出一个错误? – user507087 2010-11-21 12:40:05
@ user507087 - 抱歉,它应该是空间的实体(' ')。我错过了#。 – Oded 2010-11-21 12:42:27
该空间实体将从样式表中移除。 – 2010-11-22 23:40:21
这可以非常简单地完成,而不是在所有需要的条件XSLT指令,并完全在XSLT的精神(推式):
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="function/text()[.='true']">@</xsl:template>
<xsl:template match="function/text()[not(.='true')]">
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="function">
<td><xsl:apply-templates/></td>
</xsl:template>
</xsl:stylesheet>
当在下面的XML文档施加:
<function>true</function>
产生想要的,正确的结果:
<td>@</td>
当在下面的XML文档被施加相同的变换:
<function>false</function>
再次正确的,希望的结果是产生:
<td> </td>
最后,使用黑客(在XSLT 2.0/XPath 2.0中这不是必要的),我们可以只使用一个模板:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="function">
<td>
<xsl:value-of select=
"concat(substring('@', 1 div (.='true')),
substring(' ', 1 div not(.='true'))
)
"/>
</td>
</xsl:template>
</xsl:stylesheet>
我认为使用条件比不必写两次条件要好。 – svick 2010-11-21 17:42:38
@svick:你认为更好的选择有更低(可能接近于零)composabitiy。此外,它具有更大的复杂性,并且更容易出错。 – 2010-11-21 18:00:39
- 1. xslt转换xml输出HTML问题
- 2. XSLT输出XSLT
- 3. XSLT溢出的问题
- 4. XSLT问题问题
- 5. XSLT从输出
- 6. XSLT输出HTML
- 7. XSLT - 在文本输出中遇到<问题
- 8. XSLT转换问题与禁用输出转义
- 9. XSLT问题
- 10. XSLT gouping问题
- 11. SharePoint XSLT问题 -
- 12. XSLT问题
- 13. XSLT concat问题?
- 14. XSLT头问题
- 15. XML/XSLT输出对
- 16. 输出字符XSLT
- 17. XSLT:输出条件
- 18. XSLT递归输出
- 19. 输入/输出lzw问题
- 20. 输入/输出问题
- 21. 输出问题proc_open()
- 22. Actionscript输出问题
- 23. arc4random_uniform输出问题
- 24. JExcel输出问题
- 25. Perl输出问题
- 26. plink输出问题
- 27. Arduino输出问题
- 28. 图输出问题
- 29. 输出问题Java
- 30. 输出问题,Java
你可以添加一个示例xsl来描述你想要做什么吗? – wimh 2010-11-21 10:59:10
plz检查更新的部分 – user507087 2010-11-21 11:04:32
好问题,+1。查看我的答案,获取不使用任何XSLT条件指令的完整简短解决方案。还等一个更短的黑客,来... :) – 2010-11-21 17:31:19