我输入的内容如下:
<item id="CON_1985_14">
<prv id="p1">
<no>1</no>
<text>This "May" take some moment,you "shall" not go there.</text>
<text>This is ok.</text>
</prv>
</item>
需要在引用值的基础上创建一个excel表。
=========================
A B
=========================
May CON_1985_14
shall CON_1985_14
=========================
创建了XSLT以生成excel输出,例如:
<Worksheet ss:Name="R6">
<Table>
<Row>
<Cell>
<Data ss:Type="String">
<xsl:text>A</xsl:text>
</Data>
</Cell>
<Cell>
<Data ss:Type="String">
<xsl:text>B</xsl:text>
</Data>
</Cell>
</Row>
<xsl:for-each select="$path">
<xsl:for-each select="descendant::prv//descendant::text">
<xsl:variable name="STRUCTUReonBASISOFTOKENS" as="node()">
<Report>
<dd>
<xsl:for-each select="tokenize(normalize-space(.),'("|“)')">
<xsl:if test="(position() gt 1) and (position() mod 2 = 0)">
<xsl:value-of select="normalize-space(.)"/>
<xsl:if test="position() ne (last() - 1)">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:if>
</xsl:for-each>
</dd>
<LID>
<xsl:value-of select="/item/@id"/>
</LID>
</Report>
</xsl:variable>
<xsl:for-each select="tokenize($STRUCTUReonBASISOFTOKENS/Report/dd,',')">
<Row>
<Cell>
<Data ss:Type="String">
<xsl:value-of select="normalize-space(.)"/>
</Data>
</Cell>
<Cell>
<Data ss:Type="String">
<xsl:value-of select="$STRUCTUReonBASISOFTOKENS/Report/LID"/>
</Data>
</Cell>
</Row>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</Table>
</Worksheet>
在for-each内部创建的变量,其输出显示在消息中,例如:
<Report xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:LxNx="http://www.LXNX.com"
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:dict="http://www.lexis-nexis.com/glp/dict" xmlns:ci="http://www.lexis-nexis.com/ci"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<dd>May,shall</dd>
<LID>CON_1985_14</LID>
</Report>
现在,位于变量定义正下方的嵌套for-each正在尝试从变量结构中获取值以生成ROW,但未成功。 无法通过xpath从变量获取值以生成行。 这种语法“”表示collection()路径。
为此提供合适的解决方案。