2013-01-22 195 views
1

創建空元素我無法弄清楚如何使用XSLT 1.0使用XSLT 1.0

<values> 
     <field name="abc"></field> 
     <field name="nch"></field> 
</values> 

建立以下XML不應該有任何空間之間的元素開始和結束標記。 請儘快幫助我。

謝謝。

回答

1

在撒克遜您必須將輸出方法更改爲「html」。

實施例:

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

Here's對於VS2010工作的workearound。

實施例1:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/"> 
    <values> 
     <field name="abc"> 
     <xsl:value-of select="substring-before(' ',' ')"/> 
     </field> 
     <field name="nch"> 
     <xsl:value-of select="substring-before(' ',' ')"/> 
     </field> 
    </values> 
    </xsl:template> 
</xsl:stylesheet> 

實施例2:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/"> 
    <xsl:element name="values"> 
     <xsl:element name="filed"> 
     <xsl:attribute name="name">abc</xsl:attribute> 
     <xsl:value-of select="substring-before(' ',' ')"/> 
     </xsl:element> 
     <xsl:element name="filed"> 
     <xsl:attribute name="name">nch</xsl:attribute> 
     <xsl:value-of select="substring-before(' ',' ')"/> 
     </xsl:element> 
    </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

輸出:

<?xml version="1.0" encoding="utf-8"?> 
<values> 
    <filed name="abc"></filed> 
    <filed name="nch"></filed> 
</values> 
+0

薩克遜不產生想要的結果。 –

+0

感謝您的回覆,但這些都不適合我。這兩個例子都給出了相同的結論。 – user1904426

+0

是的,你是對的。我已經用撒克遜測試過了,這和我在vs2010中的輸出結果不一樣。如果您使用saxon,則必須將輸出方法更改爲「html」而不是「xml」。 – Devx2017

0

<x></x><x/>之間的區別純粹是詞法且通常不能由XSLT來控制處理器,因爲最終的輸出是由th執行的e串行器。

對於某些XSLT處理器(使用其內置的序列化器),其可以是能夠輸出一個空元素的完整形式。但是,對於其他處理器,例如Saxon,這不是(很容易)可能的。

+0

我使用xalan xslt processor.is這可能在xalan中嗎? – user1904426

+0

@ user1904426,對不起,我沒有安裝Xalan。您可以嘗試像'' –

+0

遺憾。這也不起作用。謝謝 – user1904426