xml – 如何使用xslt填充文本模板

前端之家收集整理的这篇文章主要介绍了xml – 如何使用xslt填充文本模板前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含信息的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

猜你在找的XML相关文章