0

これは、スペース要素を保持する前の改行に関する私の編集済みの前の質問です。

私の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>

しかし、このように、保存スペースの要素リストの要素の前に改行が必要です(タグは1行で開始および終了する必要があります)。

 <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>

タイトルグループの最後とcreators1の最後に改行を入れる必要があります。

plsは、<xsl:text></xsl:text>スペースの保持または他の方法を使用してこれを行う必要がある使用のような答えを提案しません。

ありがとう。

4

1 に答える 1

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とSaxonで似たようなもの

于 2012-07-10T13:32:15.200 に答える