-2
我有一個xml如下。我嘗試了一些xsl代碼來轉換爲所需的輸出。但我不能成功。分組和選擇特定節點太難 標記'A'的值是不變的。它們只能是'Math'和'Phys'(類名除外)。我必須將這些值與類名稱分組。如何將XML格式化爲所需的XML
輸入:
<sheet>
<Row>
<A>Class:X</A>
</Row>
<Row>
<A>Math</A>
<E>10</E>
</Row>
<Row>
<A>Phys</A>
<E>14</E>
</Row>
<Row>
<A>Class:Y</A>
</Row>
<Row>
<A>Math</A>
<E>8</E>
</Row>
<Row>
<A>Phys</A>
<E>12</E>
</Row>
</sheet>
所需的輸出:
<sheet>
<ROW>
<class_type>X</class_type>
<math>10>/math>
<phys>14>/phys>
</ROW>
<ROW>
<class_type>X</class_type>
<math>8>/math>
<phys>12>/phys>
</ROW>
</sheet>
我嘗試:
<xsl:template match="/">
<xsl:apply-templates select="/s0:root"/>
</xsl:template>
<xsl:template match="/s0:root">
<ns0:Sheet>
<xsl:for-each select="s0:Row">
<xsl:if test="contains(s0:A/text(),'Class:')">
<ns0:class_type>
<xsl:value-of select="substring-after(s0:A/text(),'Class:')"/>
</ns0:class_type>
</xsl:if>
<xsl:if test="contains(s0:A/text(),'Math')">
<ns0:math>
<xsl:value-of select="s0:E/text()"/>
</ns0:math>
</xsl:if>
<xsl:if test="contains(s0:A/text(),'Phys')">
<ns0:phys>
<xsl:value-of select="s0:E/text()"/>
</ns0:phys>
</xsl:if>
</xsl:for-each>
</ns0:Sheet>
</xsl:template>
我投票結束這個問題作爲題外話,因爲在這個網站,你應該嘗試**自己寫代碼**。後** [做更多的研究](//meta.stackoverflow.com/questions/261592)**如果你有問題,你可以**發佈你已經嘗試**與清楚的解釋是什麼是'工作**並提供** [最小,完整和可驗證示例](// stackoverflow.com/help/mcve)**。 – Rob
對不起,我的英語,但我渴望了一個星期。我閱讀了所有Xslt文檔和示例。所以我寫了自己的代碼。我不知道你爲什麼會得到這樣的印象 – LeoMessi
您沒有向我們展示您爲解決問題所寫的XSLT。 – Rob