2017-08-15 11 views
0

XSLTファイルを使用してXMLデータから.xls Excelファイルを生成しています。これはうまくいき、有効なXLSファイルを生成しています。XML XSLT経由でExcelにエクスポート - 太字の書式を追加

これを拡張して、一部のセルを太字にする必要があります。私はボールド属性が割り当てられていために、この行をしたいと思います

<?xml version="1.0" encoding="utf-8"?> 
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> 
    <ERRORCODE>0</ERRORCODE> 
    <PRODUCT BUILD="06-06-2017" NAME="FileMaker" VERSION="ProAdvanced 16.0.2"/> 
    <METADATA> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnA" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnB" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnC" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnD" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnE" TYPE="TEXT"/> 
    </METADATA> 
    <RESULTSET FOUND="6"> 
     <ROW MODID="0" RECORDID="900"> 
      <COL> 
       <DATA>Created: 15-August-2017</DATA> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
     </ROW> 
     <ROW MODID="0" RECORDID="901"> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
      <COL> 
       <DATA/> 
      </COL> 
     </ROW> 
     <ROW MODID="1" RECORDID="902"> 
      <COL> 
       <DATA>Name</DATA> 
      </COL> 
      <COL> 
       <DATA>ID</DATA> 
      </COL> 
      <COL> 
       <DATA>Category</DATA> 
      </COL> 
      <COL> 
       <DATA>Number</DATA> 
      </COL> 
      <COL> 
       <DATA>Amount</DATA> 
      </COL> 
     </ROW> 
     <ROW MODID="1" RECORDID="904"> 
      <COL> 
       <DATA>Acme Corp Pty Ltd</DATA> 
      </COL> 
      <COL> 
       <DATA>123456</DATA> 
      </COL> 
      <COL> 
       <DATA>Category 1</DATA> 
      </COL> 
      <COL> 
       <DATA>1</DATA> 
      </COL> 
      <COL> 
       <DATA>$456.78</DATA> 
      </COL> 
     </ROW> 
     <ROW MODID="1" RECORDID="905"> 
      <COL> 
       <DATA>Demo Company Pty Ltd</DATA> 
      </COL> 
      <COL> 
       <DATA>987654</DATA> 
      </COL> 
      <COL> 
       <DATA>Category 2</DATA> 
      </COL> 
      <COL> 
       <DATA>1</DATA> 
      </COL> 
      <COL> 
       <DATA>$789.32</DATA> 
      </COL> 
     </ROW> 
    </RESULTSET> 
</FMPXMLRESULT> 

:ここに私のXMLファイルです

<ROW MODID="1" RECORDID="902"> 
      <COL> 
       <DATA>Name</DATA> 
      </COL> 
      <COL> 
       <DATA>ID</DATA> 
      </COL> 
      <COL> 
       <DATA>Category</DATA> 
      </COL> 
      <COL> 
       <DATA>Number</DATA> 
      </COL> 
      <COL> 
       <DATA>Amount</DATA> 
      </COL> 
     </ROW> 

が、私のXSLTファイルにこのことについて行う方法がわかりません。次のように

行を処理するXSLTの一部である:

<Style ss:ID="MyTitleStyle"> 
      <Alignment ss:WrapText="0" /> 
      <Font ss:Bold="1"/> 
     </Style> 

<xsl:for-each select="fmp:FMPXMLRESULT/fmp:RESULTSET/fmp:ROW"> 

     <Row> 
      <xsl:for-each select="fmp:COL"> 
       <xsl:variable name="i" select="position()" /> 
       <xsl:variable name="zFieldName" select="/fmp:FMPXMLRESULT/fmp:METADATA/fmp:FIELD[$i]/@NAME" /> 
       <xsl:variable name="zFieldType" select="/fmp:FMPXMLRESULT/fmp:METADATA/fmp:FIELD[$i]/@TYPE" /> 
       <!-- We are looping through rows and columns, and now we can examine the cell --> 
       <Cell ss:StyleID="MyTextStyle1"> 
            <Data ss:Type="String"> 
             <xsl:value-of select="." /> 
            </Data> 
       </Cell> 
      </xsl:for-each><!-- next column --> 
     </Row> 
    </xsl:for-each><!-- next row --> 
+0

"この行"とは具体的にはどういう意味ですか?どんなプロパティによって行を識別したいですか? - P.S.あなたのテーブルにダミーレコードがあるようですが、これは悪い習慣です。 –

+0

@ michael.hor257k申し訳ありませんが、これらの列はExcelの単一の「行」になります。これは太字にしたい "行"です - その5 要素(Excelの列見出し)。 – user982124

+0

私の質問はまだ立っています:どの5 要素がExcelの列見出しになるはずですか?それは常に3番目の行(あなたの例のように)ですか、それとも変わることができますか? –

答えて

0

ここため、各修飾です。どのように "大胆な"行を識別したいかはあまり明確ではありません。この例では、ヘッダーが「名前」を含む列であると仮定しています。

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fmp="http://www.filemaker.com/fmpxmlresult" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
> 
<xsl:output method="xml" indent="yes"/> 

<xsl:template match="/"> 
<xml 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:fmp="http://www.filemaker.com/fmpxmlresult" 
> 
<xsl:element name='Table'> 
    <xsl:for-each select="//fmp:ROW"> 
     <Row> 
     <!-- If we have a cell with "Name", then consider it the header --> 
     <xsl:variable name='header' select='fmp:COL[fmp:DATA="Name"]'/> 
     <xsl:for-each select="fmp:COL"> 
     <Cell> 
      <xsl:if test='$header'> 
       <xsl:attribute name='ss:StyleID'>MyTextStyle1</xsl:attribute> 
      </xsl:if> 
      <Data ss:Type="String"> 
       <xsl:value-of select="." /> 
      </Data> 
      </Cell> 
     </xsl:for-each><!-- next column --> 
     </Row> 
    </xsl:for-each><!-- next row --> 
</xsl:element> 
</xml> 

</xsl:template> 

</xsl:stylesheet> 
関連する問題