2012-07-10 71 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和撒克逊

类似的东西
相关问题