我有以下 XML 文件。
<Record
Name="My_Record"
<Fields
StartingBit="0"
Size="3"
Name="Field_1">
</Fields>
<Fields
StartingBit="1"
Size="5"
Name="Field_2">
</Fields>
<Fields
StartingBit="2"
Size="8"
Name="Field_3">
</Fields>
<Fields
StartingBit="3"
Size="4"
Name="Field_4"
</Fields>
</Record>
我想使用 XSLT 从前一个节点的 @StartingBit + @Size 正确更新 @StartingBit 属性 - 这将是当前节点的 @StartingBit 值。生成的 XML 应如下所示:
<Record
Name="My_Record"
<Fields
StartingBit="0"
Size="3"
Name="Field_1">
</Fields>
<Fields
StartingBit="3"
Size="5"
Name="Field_2">
</Fields>
<Fields
StartingBit="8"
Size="8"
Name="Field_3">
</Fields>
<Fields
StartingBit="16"
Size="4"
Name="Field_4"
</Fields>
</Record>
到目前为止,我对 XSLT 的最新尝试如下:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match ="Fields/@StartingBit">
<xsl:value-of select ="(preceding-sibling::Fields[1]/@StartingBit + preceding-sibling::Fields[1]/@Size)"/>
</xsl:template>
</xsl:stylesheet>
上面的转换不会产生我想要的 - 基本上 @StartingBit 不会改变。我不精通节点导航以获得我喜欢的结果 - 有人可以协助我进行转换吗?先感谢您。
- 洛伦兹