这是我之前编辑过的关于保留空格元素之前换行的问题。
假设我的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 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>
这个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>
但我需要在元素列表中的元素之前换行,而不是在该元素之后(标签需要开始和结束为一行),就像这样,
<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>
我需要在标题组末尾和创建者1末尾换行。
请不要建议像使用<xsl:text></xsl:text>
这样的答案。我需要通过使用保留空间或其他方式来做到这一点。
谢谢。
显然,这在很大程度上取决于您如何处理它,但使用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和Saxon 中类似的东西