0

我有一个如下的 xml 结构:

<doc>
 <line void="false">
  <lineNumber>1</lineNumber>
  <info1>ddddd</info1>
  <info2>aaaaa</info2>
 </line>

 <line void="true">
  <lineNumber>2</lineNumber>
  <voidLineNumber>1</voidLineNumber>
  <voidValue>2.00</voidValue>
 </line>

</doc>

我需要一组数据。我想选择 void = false 的所有行以及 void = true 行中的 voidLineNumber 和 voidValue 数据以及原始行中的 voidLineNumber = lineNumber。

这可能吗?任何帮助,将不胜感激。谢谢

4

1 回答 1

0

正如 Michael Kay 所指出的,XPath 本身只能用于选择节点,而不是转换它们。你可以用 XSLT 做你想做的事:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="utf-8" indent="yes" />

    <xsl:template match="doc">
        <xsl:apply-templates select="line" />
    </xsl:template>

    <xsl:template match="line">
    <xsl:variable name="voidvalue"><xsl:value-of select="@void" /></xsl:variable>

         <xsl:if test="$voidvalue='false'">
                 <xsl:copy>
                    <xsl:copy-of select="@*" />
                    <xsl:apply-templates />
                </xsl:copy>
         </xsl:if>
    </xsl:template>

    <xsl:template match="*">
                    <xsl:element name="{name()}">
                             <xsl:if test="name(.)='lineNumber'">
                                <xsl:value-of select="."/>
                             </xsl:if>
                    </xsl:element>
    </xsl:template>
</xsl:stylesheet>
于 2013-08-22T14:26:07.237 回答