将模板内的变量初始化为xml指定的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将模板内的变量初始化为xml指定的次数相关的知识,希望对你有一定的参考价值。
我有一个需要基于xml创建记录的要求。我正在使用xslt这样做。我正在使用如下提供的xml和xslt:
<?xml version="1.0" encoding="utf-8"?>
<TestFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TestFile.xsd">
<AccountEntity AccountNumber = "55904" >
<TransactionEntity TransactionId = "2337" >
</TransactionEntity>
<TransactionEntity TransactionId = "2338" >
</TransactionEntity>
</AccountEntity>
要处理上述xml,我使用xslt作为:
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" version="1.0" encoding="utf-8" />
<xsl:template match="/" >
<xsl:apply-templates select="AccountEntity" />
</xsl:template>
<xsl:template match="AccountEntity">
<CardNumber>
<xsl:value-of select="@AccountNumber"/>
</CardNumber>
<xsl:apply-templates select="TransactionEntity" />
</xsl:template>
<xsl:template match="TransactionEntity">
<UniqueId>
<xsl:value-of select="@TransactionId"/>
</UniqueId>
</xsl:template>
根据我的要求,我需要能够创建2条记录,每条记录都具有值:卡号:55904唯一ID:2337卡号:55904唯一ID:2338但是,当我使用上面的xslt解析我的xml时,我无法生成2条记录。谁能建议我一个解决方案,以便每次每当AccountEntity内有一个transactionEntity时,我都可以创建一个accountId。 AccountEntity内部的TransactionEntity的数量不一定每次都是2,它的数量可以从0到n次变化。任何帮助将非常感激。预先感谢!
答案
尝试这种方式,也许:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/TestFile">
<root>
<xsl:for-each select="AccountEntity/TransactionEntity">
<Record>
<CardNumber>
<xsl:value-of select="../@AccountNumber"/>
</CardNumber>
<UniqueId>
<xsl:value-of select="@TransactionId"/>
</UniqueId>
</Record>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
以上是关于将模板内的变量初始化为xml指定的次数的主要内容,如果未能解决你的问题,请参考以下文章
C++中,类内的成员变量自动初始化为零吗,而全局变量随意赋值
定义指针变量时,必须将指针变量初始化为NULL(为空),否则,指针变量会由于初始化位置的不确定