是否可以使用單個xsl將多個XML應用於具有不同根元素和select元素的多個XML?請指教。 原始XML-1:xslt傳遞模板匹配和運行時的每個值
<employees>
<employee>
<name>ABC</name>
<id>123</id>
<dept>sales</dept>
<city>XYZ</city>
</employee>
</employees>
的xsl:
<doc>
<set>
<field name="Name">ABC</field>
<field name="Id">123</field>
<field name="Department">sales</field>
<field name="City">XYZ</field>
</set>
</doc>
我想使用相同的xsl用於將下面的XML:
<xsl:template match="employees">
<xsl:element name="doc">
<xsl:for-each select="employee">
<xsl:element name="set">
<xsl:element name="field">
<xsl:attribute name="name">Name</xsl:attribute>
<xsl:value-of select="name"/>
</xsl:element>
<xsl:element name="field">
<xsl:attribute name="name">Id</xsl:attribute>
<xsl:value-of select="id"/>
</xsl:element>
<xsl:element name="field">
<xsl:attribute name="name">Department</xsl:attribute>
<xsl:value-of select="dept"/>
</xsl:element>
<xsl:element name="field">
<xsl:attribute name="name">City</xsl:attribute>
<xsl:value-of select="city"/>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
作爲這將產生輸出。
<customers>
<customer>
<name>DEF</name>
<id>456</id>
<city>DEF</city>
</customer>
</customers>
我試圖使用變量和設置根元件和用於-每個通java程序在運行時選擇元件。但它給錯誤。
<xsl:variable name="rootElement"></xsl:variable>
<xsl:variable name="subElement"></xsl:variable>
<xsl:template match="$rootElement">
<xsl:element name="set">
<xsl:for-each select="$subElement">
錯誤:
FATAL ERROR: 'line 4: Error parsing XPath expression '$rootElement'.'
javax.xml.transform.TransformerConfigurationException: line 4: Error parsing XPath expression '$rootElement'.
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(Unknown Source)
任何人都可以請建議。謝謝。
您只能在所有輸入文檔重複使用相同的XSLT將在您的示例中具有相同的層次結構:table/records/fields。 –