Я пытаюсь изменить файл XML, используя файл XSL, для создания электронной таблицы Excel - у меня есть основы этой работы, но все мои ячейки отображаются в виде текстовых ячеек в Excel, но мне нужны некоторые из них показывать в виде чисел, чтобы мы могли правильно выполнять вычисления в Excel.
Вот мой XML:
<?xml version="1.0" encoding="utf-8"?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="02-13-2018" NAME="FileMaker" VERSION="ProAdvanced 16.0.5"/>
<DATABASE DATEFORMAT="D/m/yyyy" LAYOUT="" NAME="Assets.fmp12" RECORDS="6" TIMEFORMAT="h:mm:ss a"/>
<METADATA>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Code" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Country" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Price" TYPE="NUMBER"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Tax" TYPE="NUMBER"/>
</METADATA>
<RESULTSET FOUND="2">
<ROW MODID="0" RECORDID="23">
<COL>
<DATA>CH56809</DATA>
</COL>
<COL>
<DATA>Australia</DATA>
</COL>
<COL>
<DATA>1024.64</DATA>
</COL>
<COL>
<DATA>68.45</DATA>
</COL>
</ROW>
<ROW MODID="0" RECORDID="24">
<COL>
<DATA>PZ30844</DATA>
</COL>
<COL>
<DATA>Australia</DATA>
</COL>
<COL>
<DATA>2014.64</DATA>
</COL>
<COL>
<DATA>116.5</DATA>
</COL>
</ROW>
</RESULTSET>
</FMPXMLRESULT>
В разделе METADATA вы можете увидеть, является ли каждое поле текстовым или числовым полем:
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Country" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Price" TYPE="NUMBER"/>
, поэтому мы должны использовать это для установки ячейки в виде числа текста.
Я не уверен в правильном синтаксисе здесь - я считаю, что нам просто нужно изменить этот бит:
<xsl:for-each select="fmp:FMPXMLRESULT/fmp:RESULTSET/fmp:ROW">
<Row>
<!-- Next line inserts an empty column on the left side of the sheet -->
<!-- This is simply a personal preference of mine :) -->
<xsl:for-each select="fmp:COL">
<xsl:variable name="i" select="position()" />
<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 -->
но не уверен, как получить это, чтобы учесть тип поля здесь при создании ячейки. Я использую:
<xsl:stylesheet version="1.0"