2016-08-23 11 views
0

XSLTを使用してXMLの書式設定に問題があります。見返りにXSLTを使用したXML書式設定の問題

  <FileData> 
       <File 
       FileNumber="{$ISCI}" 
       title="Test Ad" 
       advertiser="{$Advertiser}" 
       /> 
      </FileData> 

この私のようにフォーマットされた出力を与える:私はコードの書かれている現時点では

<?xml version="1.0" encoding="utf-8"?> 
    <FileData> 
     <File FileNumber="CBIPI3316B6" advertiser="SOKOLOVE LAW" title="Test Ad"/> 
    </FileData> 

を私の代わりにフォーマットが必要です。

<?xml version="1.0" encoding="utf-8"?> 
    <FileData> 
     <File 
     FileNumber= "CBIPI3316B6" 
     advertiser= "SOKOLOVE LAW" 
     title=   "Test Ad" 
     /> 

がありますこれを変換する簡単な方法? & #xaを使用してみましたが、出力を正常に変更できませんでした。

答えて

0

XSLTコードに字句結果を書き込むのではなく、結果ツリーを作成してシリアル化できるように指示しています。リテラル結果要素は、あなたのXSLTコードのシリアル化された結果は限り属性は懸念しているように見える方法を決定しません

<foo att1="value1" att2="value2"/> 

または

<foo att1="value1" 
    att2="value2"/> 

のように書かれているかどうかそう。そして、XSLTの仕様は、覚えている限り、属性の書式設定や字下げについての規定はありません。あなたは非常に低いことを設定する場合はサクソン9サポートの商用版は、シリアライズの行の長さを指定するために使用されるシリアル化の拡張属性 saxon:line-lengthは、その後、各属性には、独自のラインで終わるので、例えば

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 

    <xsl:param name="ISCI" select="'foo'"/> 
    <xsl:param name="Advertiser" select="'bar'"/> 

    <xsl:output method="xml" indent="yes" xmlns:saxon="http://saxon.sf.net/" saxon:line-length="5"/> 

    <xsl:template match="/"> 
     <FileData> 
      <File FileNumber="{$ISCI}" title="Test Ad" advertiser="{$Advertiser}"/> 
     </FileData> 
    </xsl:template> 


</xsl:transform> 

出力は

<FileData> 
    <File FileNumber="foo" 
     title="Test Ad" 
     advertiser="bar"/> 
</FileData> 

あなたが本当に特定のシリアル化が必要な場合は、あなたのXSLTプロセッサが似ていますが、一般的に何かを提供するかどうかを確認する必要がありますし、私はあなたがXSLT変換の木の結果を取るために、独自のシリアライザを記述する必要があると思うし、シリアル化するか、XSLT処理ツールチェーンに接続します。

+0

私はXSLT – user6391187

+0

@ user6391187の一部としてサクソンを使用することができませんが、フォーマットを変更するための拡張属性を提供する他のXSLTプロセッサは認識していません。とにかく、答えには何が必要なのかを示す独自のシリアライザを書くようなヒントが含まれています。これがどのように行われるかは、使用されているXSLTプロセッサーとそのAPIと使用されているプラ​​ットフォームによって異なります。したがって、具体的な助けが必要な場合は、使用するXSLTプロセッサーとその使用方法を明示的に指定する必要があります。これは、XSLT以外で行われるプログラミングによって決まります。 –