2012-07-10 118 views
0

這是我對保留空間元素之前的換行符編輯的上一個問題。XSLT:在保留空間元素之前添加換行符

假設我這樣的XML,

<content> 
<titleGroup> 
<title>text</title> 
</titleGroup> 
<creators1> 
<creator> 
<personName> 
    <Name>john</Name> 
</personName> 
</creator> 
</creators1> 
<creators2> 
<affiliation> 
<orgDiv> text </orgDiv> 
<address> 
<country>UK</country> 
</address> 
</affiliation> 
</creators2> 
</content> 

我用下面的xsl:此XML產生

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
<xsl:output method="xml" indent="yes"/> 
<xsl:strip-space elements="*"/> 
<xsl:preserve-space elements ="creators1 creators2"/> 

<xsl:template match ="/"> 
<xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
</xsl:copy>  
</xsl:template> 
</xsl:stylesheet> 

輸出,

<content><titleGroup><title>text</title></titleGroup><creators1> 
<creator><personName><Name>john</Name></personName></creator></creators1><creators2> 
<affiliation><orgDiv>text</orgDiv><address><country>UK</country></address></affiliation></creators2></content> 

,但我之前需要換行符元素保存空間的元素列表中不是該元素之後(一個標籤需要開始和結束到一行)這樣,

<content><titleGroup><title>text</title></titleGroup> 
<creators1><creator><personName><Name>john</Name></personName></creator></creators1> 
<creators2><affiliation><orgDiv>text</orgDiv><address><country>UK</country></address></affiliation></creators2></content> 

我需要給在titlegroup的最後一個換行符,並在creators1結束。

請不要建議像使用的答案<xsl:text></xsl:text>我需要通過使用保留空間或其他方式來做到這一點。

謝謝。

回答

1

很明顯,它取決於你如何處理它,但MSXSL 3(我假設你正在使用你的命名空間),取消輸出模式,擺脫保留空間並將文本放入空間

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
     <xsl:strip-space elements="*"/> 

     <xsl:template match ="@* | node()"> 
      <xsl:copy> 
       <xsl:apply-templates select="@* | node()"/> 
      </xsl:copy>  
     </xsl:template> 

     <xsl:template match="creators1 | creators2"> 
      <xsl:text> 
      </xsl:text> 
      <xsl:copy> 
       <xsl:apply-templates select="@* | node()"/> 
      </xsl:copy> 
     </xsl:template> 
    </xsl:stylesheet> 

爲您提供:

<?xml version="1.0" encoding="UTF-16"?><content><titleGroup><title>text</title></titleGroup> 
    <creators1><creator><personName><Name>john</Name></personName></creator></creators1> 
    <creators2><affiliation><orgDiv> text </orgDiv><address><country>UK</country></address></affiliation></creators2></content> 

和Xalan和撒克遜

類似的東西