xml – 用xsl输出纯文本

前端之家收集整理的这篇文章主要介绍了xml – 用xsl输出纯文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要使用XSL从XML生成简单的纯文本输出。由于我没有在线找到任何好的简洁的例子,所以我决定在这里发布我的解决方案。任何指向更好的例子的链接当然会被赞赏:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
    <xsl:template match="/">
        <xsl:for-each select="script/command" xml:space="preserve">at -f <xsl:value-of select="username"/> <xsl:value-of select="startTime/@hours"/>:<xsl:value-of select="startTime/@minutes"/> <xsl:value-of select="startDate"/><xsl:text>
</xsl:text></xsl:for-each> 
    </xsl:template>
</xsl:stylesheet>

在这里帮助我的几件重要事情:

>使用xsl:output在输出文档的开头省略标准声明
>使用xml:space =“preserve”属性来保留我在xsl:for-each标签内写的任何空格。这也需要我在单行(除了换行符除外)之外,在每个标签中也包括标签的所有代码
>使用插入换行符 – 再次我不得不在这里省略标准的xml缩进。

这个xslt的结果和期望的输出是:

at -f alluser 23:58 17.4.2010
at -f ggroup67 7:58 28.4.2010
at -f ggroup70 15:58 18.4.2010
at -f alluser 23:58 18.4.2010
at -f ggroup61 7:58 22.9.2010
at -f ggroup60 23:58 21.9.2010
at -f alluser 3:58 22.9.2010

正如我所说,任何关于如何做这个更优雅的建议将不胜感激。

后续2011-05-08:

这里是我正在处理的xml的类型:

<script xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="script.xsd">
    <command>
        <username>alluser</username>
        <startTime minutes="58" hours="23"/>
        <startDate>17.4.2010</startDate>
    </command>
</script>
>您可以定义一个模板来匹配脚本/命令,并消除xsl:for-each
> concat()可以用来缩短表达式,并保存你不要显式地插入这么多的< xsl:text>和< xsl:value-of>元素。
>使用实体引用& #xA;对于回车,而不是依赖于保留< xsl:text>之间的换行符。元素有点安全,因为代码格式化不会弄乱你的换行符。此外,对我来说,它读作一个明确的换行符,更容易理解意图。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" >
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>

    <xsl:template match="script/command">
        <xsl:value-of select="concat('at -f ',username,' ',startTime/@hours,':',startTime/@minutes,startDate,'&#xA;')"/>
    </xsl:template>

</xsl:stylesheet>
原文链接:/xml/293290.html

猜你在找的XML相关文章