XML和XSLT将输出写入文本文件
发布时间:2020-12-16 23:16:10 所属栏目:百科 来源:网络整理
导读:我试图在XSLT中使用增量.并将输出写入txt文件. 这是我的代码: Xslt代码: ?xml version="1.0"?xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:output method="text"/ xsl:result-document href="foo.txt" method=text
我试图在XSLT中使用增量.并将输出写入txt文件.
这是我的代码: Xslt代码: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="text"/> <xsl:result-document href="foo.txt" method=text /> <xsl:template match="/"> </xsl:template> <xsl:template match="/build/build"> <xsl:variable name="buildNumber" select="."/> <xsl:element name="build"> <xsl:value-of select="$buildNumber + 1"/> </xsl:element> </xsl:template> <xsl:template match="/|@*|node()"> <xsl:value-of select="build/major"/> <xsl:value-of select="build/minor"/> <xsl:value-of select="build/build"/> <xsl:value-of select="build/release"/> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> XML代码是: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="E:BuildgenVer.xsl"?> <build> <major>1.</major><minor>0.</minor><build>0</build><release>.0</release> </build> 我尝试使用< xsl:result-document>它给错误说< xsl:result-document>不能是< xsl:stylesheet>的孩子或< xsl:template>.谢谢 解决方法
使用< xsl:result-document>的方法听起来很完美.唯一的问题是你的样式表是XSLT 1,而对于< xsl:result-document>你需要XSLT 2. XSLT是一种功能语言,与这个问题无关.
如有必要,发布使用< xsl:result-document>的XSLT代码.我会帮你解决的. 编辑: 这里你的代码有必要的变化.原始代码的一部分(例如method =“text”)表示您希望结果为文本文件,而< xsl:element>看起来你正在尝试输出一个XML文件,所以我为两者编写了代码.如前所述,< xsl:result-document>需要XSLT 2. 这会创建一个XML文件: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <xsl:template match="/"> <xsl:variable name="foldername" select="concat(/build/major,/build/minor,string(/build/build + 1),build/release)"/> <xsl:result-document href="{$foldername}/foo.xml" method="xml"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:result-document> </xsl:template> <xsl:template match="element()"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="/build/build"> <xsl:copy> <xsl:variable name="buildNumber" select="."/> <xsl:value-of select="$buildNumber + 1"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 这会创建一个文本文件: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:variable name="foldername" select="concat(/build/major,build/release)"/> <xsl:result-document href="{$foldername}/foo.txt" method="text"> <xsl:apply-templates/> </xsl:result-document> </xsl:template> <xsl:template match="element()"> <xsl:apply-templates/> </xsl:template> <xsl:template match="/build/build"> <xsl:variable name="buildNumber" select="."/> <xsl:value-of select="$buildNumber + 1"/> </xsl:template> </xsl:stylesheet> 输出文件在名称为版本的文件夹中创建,如您所愿,但请注意该文件夹必须预先存在. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |