【发布时间】:2017-12-02 04:37:53
【问题描述】:
我正在尝试添加一个引用另一个子节点的子节点。在下面的示例中,我想将<AcctID> 从<AcctDtl> 填充到<Position>。我这样做是因为 MS-Access 仅将子节点导入单独的表中,而没有引用/链接表的方式。
<AcctFncl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="fsrv" xsi:schemaLocation="fsrv Rec.xsd" Version="27">
<CreateDate>20151101</CreateDate>
<EffectDate>20151031</EffectDate>
<FnclRec>
<AcctDtl>
<MgmtCode>XXX</MgmtCode>
<AcctID>123980</AcctID>
</AcctDtl>
<Position>
<FundID>5268</FundID>
<TotalUnAssigned>50</TotalUnAssigned>
<TotalAssigned>0</TotalAssigned>
<AveCost>10</AveCost>
<DivOpt>1</DivOpt>
</Position>
</FnclRec>
</AcctFncl>
应该看起来像:
<AcctFncl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="fsrv" xsi:schemaLocation="fsrv Rec.xsd" Version="27">
<CreateDate>20151101</CreateDate>
<EffectDate>20151031</EffectDate>
<FnclRec>
<AcctDtl>
<MgmtCode>XXX</MgmtCode>
<AcctID>123980</FundAcctID>
</AcctDtl>
<Position>
<AcctID>123980</AcctID>
<FundID>5268</FundID>
<TotalUnAssigned>50</TotalUnAssigned>
<TotalAssigned>0</TotalAssigned>
<AveCost>10</AveCost>
<DivOpt>1</DivOpt>
</Position>
</FnclRec>
</AcctFncl>
我一直在尝试创建一个 XSLT 来执行此操作,但我想我在这里过头了。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Position">
<FundPosition>
<AcctID><xsl:value-of select="../AcctDtl/CreateDate"/></AcctID>
<xsl:apply-templates select="@*|node()"/>
</FundPosition>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
抱歉,应该是
123980 。我的错。 XML 来自第三方系统,我正在尝试将其导入 MS Access 并拥有一个在导入时链接两个子表的密钥。 Access 会导入单独的表,但没有用于链接它们的通用键。