加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读