xml – 如何使用xslt填充文本模板
发布时间:2020-12-16 07:56:35 所属栏目:百科 来源:网络整理
导读:我有一个包含信息的XML文件,例如: letter nameTest/name age20/age meMe/me/letter 然后我有一个文本模板,如: Dear $name,some text with other variables like $age or $name againgreatings $me 当使用xslt将XML转换为纯文本字母时,我可以使用以下内容:
我有一个包含信息的XML文件,例如:
<letter> <name>Test</name> <age>20</age> <me>Me</me> </letter> 然后我有一个文本模板,如: Dear $name,some text with other variables like $age or $name again greatings $me 当使用xslt将XML转换为纯文本字母时,我可以使用以下内容: <xsl:text>Dear </xsl:text><xsl:value-of select="name"/><xsl:text> some text with other variables like </xsl:text> <xsl:value-of select="age"/><xsl:text> or </xsl:text> <xsl:value-of select="name"/><xsl:text> again greatings </xsl:text><xsl:value-of select="me"/> 但是当我得到越来越多的变量和更多的文本时,这就变成了进入和维护的噩梦. 有没有办法用xslt以更干净的方式做到这一点?我更愿意,如果我可以使用我上面用作示例的文本模板并将$name和$age替换为正确的值.
这个样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my"> <xsl:output method="text"/> <xsl:preserve-space elements="my:layout"/> <my:layout>Dear <name/>,some text with other variables like <age/> or <name/> again greatings <me/></my:layout> <xsl:variable name="vData" select="/"/> <xsl:template match="/"> <xsl:apply-templates select="document('')/*/my:layout/node()"/> </xsl:template> <xsl:template match="*/*"> <xsl:value-of select="$vData//*[name()=name(current())]"/> </xsl:template> </xsl:stylesheet> 输出: Dear Test,some text with other variables like 20 or Test again greatings Me 注意:对于更复杂的人口模式(即迭代),请查看以下帖子:Sitemesh like functionality with XSLT?和XSLT Layouts With Dynamic Content Region (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |