Я новичок в XML и XSLT, но у меня есть эта проблема.
У меня есть следующий формат файла XML: -
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="testing.xsl"?>
<asx:ABAP xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:VALUES>
<SOURCE>
<AXIS_INFO>
<RRWS_SX_AXIS_INFO>
<AXIS>000</AXIS>
<NCHARS>1</NCHARS>
<NCOORDS>3</NCOORDS>
<CHARS>
<RRWS_SX_AXIS_CHARS>
<CHANM>49E9DSTKHGHIYTUZRJ1XKDLC6</CHANM>
<HIENM />
<VERSION />
<DATETO>0000-00-00</DATETO>
<CAPTION>Key Figures</CAPTION>
<CHAPRSNT>1</CHAPRSNT>
<CHATYP>0</CHATYP>
<ATTRINM />
</RRWS_SX_AXIS_CHARS>
</CHARS>
</RRWS_SX_AXIS_INFO>
<RRWS_SX_AXIS_INFO>
<AXIS>001</AXIS>
<NCHARS>3</NCHARS>
<NCOORDS>370</NCOORDS>
<CHARS>
<RRWS_SX_AXIS_CHARS>
<CHANM>0IS_CSTATUS</CHANM>
<HIENM />
<VERSION />
<DATETO>0000-00-00</DATETO>
<CAPTION>Claim Status</CAPTION>
<CHAPRSNT>1</CHAPRSNT>
<CHATYP>1</CHATYP>
<ATTRINM />
</RRWS_SX_AXIS_CHARS>
<RRWS_SX_AXIS_CHARS>
<CHANM>INJDESCRP</CHANM>
<HIENM />
<VERSION />
<DATETO>0000-00-00</DATETO>
<CAPTION>Injury Descriptor</CAPTION>
<CHAPRSNT>1</CHAPRSNT>
<CHATYP>1</CHATYP>
<ATTRINM />
</RRWS_SX_AXIS_CHARS>
<RRWS_SX_AXIS_CHARS>
<CHANM>0IS_CLAIMNT</CHANM>
<HIENM />
<VERSION />
<DATETO>0000-00-00</DATETO>
<CAPTION>Claimant</CAPTION>
<CHAPRSNT>1</CHAPRSNT>
<CHATYP>1</CHATYP>
<ATTRINM>
<RRWS_S_ATTRINM>
<ATTRINM>ZIPCD1ST</ATTRINM>
<CAPTION>Post Code 1st part.</CAPTION>
<CHAPRSNT>2</CHAPRSNT>
</RRWS_S_ATTRINM>
</ATTRINM>
</RRWS_SX_AXIS_CHARS>
</CHARS>
</RRWS_SX_AXIS_INFO>
</AXIS_INFO>
<CELL_DATA>
<RRWS_S_CELL>
<CELL_ORDINAL>000000</CELL_ORDINAL>
<VALUE>1.00000000000000</VALUE>
<FORMATTED_VALUE>1</FORMATTED_VALUE>
<VALUE_TYPE />
<CURRENCY />
<UNIT />
<MWKZ>F</MWKZ>
<NUM_SCALE>0</NUM_SCALE>
<NUM_PREC>0</NUM_PREC>
<CELL_STATUS />
<BACK_COLOR>00</BACK_COLOR>
</RRWS_S_CELL>
<RRWS_S_CELL>
<CELL_ORDINAL>000001</CELL_ORDINAL>
<VALUE>12131.80</VALUE>
<FORMATTED_VALUE>£ 12,131.80</FORMATTED_VALUE>
<VALUE_TYPE />
<CURRENCY>GBP</CURRENCY>
<UNIT />
<MWKZ>W</MWKZ>
<NUM_SCALE>0</NUM_SCALE>
<NUM_PREC>0</NUM_PREC>
<CELL_STATUS />
<BACK_COLOR>00</BACK_COLOR>
</RRWS_S_CELL>
<RRWS_S_CELL>
<CELL_ORDINAL>000002</CELL_ORDINAL>
<VALUE>10131.80</VALUE>
<FORMATTED_VALUE>£ 10,131.80</FORMATTED_VALUE>
<VALUE_TYPE />
<CURRENCY>GBP</CURRENCY>
<UNIT />
<MWKZ>W</MWKZ>
<NUM_SCALE>0</NUM_SCALE>
<NUM_PREC>0</NUM_PREC>
<CELL_STATUS />
<BACK_COLOR>00</BACK_COLOR>
</RRWS_S_CELL>
<RRWS_S_CELL>
<CELL_ORDINAL>000003</CELL_ORDINAL>
<VALUE>1.00000000000000</VALUE>
<FORMATTED_VALUE>1</FORMATTED_VALUE>
<VALUE_TYPE />
<CURRENCY />
<UNIT />
<MWKZ>F</MWKZ>
<NUM_SCALE>0</NUM_SCALE>
<NUM_PREC>0</NUM_PREC>
<CELL_STATUS />
<BACK_COLOR>00</BACK_COLOR>
</RRWS_S_CELL>
<RRWS_S_CELL>
<CELL_ORDINAL>000004</CELL_ORDINAL>
<VALUE>28116.90</VALUE>
<FORMATTED_VALUE>£ 28,116.90</FORMATTED_VALUE>
<VALUE_TYPE />
<CURRENCY>GBP</CURRENCY>
<UNIT />
<MWKZ>W</MWKZ>
<NUM_SCALE>0</NUM_SCALE>
<NUM_PREC>0</NUM_PREC>
<CELL_STATUS />
<BACK_COLOR>00</BACK_COLOR>
</RRWS_S_CELL>
<RRWS_S_CELL>
<CELL_ORDINAL>000005</CELL_ORDINAL>
<VALUE>7616.90</VALUE>
<FORMATTED_VALUE>£ 7,616.90</FORMATTED_VALUE>
<VALUE_TYPE />
<CURRENCY>GBP</CURRENCY>
<UNIT />
<MWKZ>W</MWKZ>
<NUM_SCALE>0</NUM_SCALE>
<NUM_PREC>0</NUM_PREC>
<CELL_STATUS />
<BACK_COLOR>00</BACK_COLOR>
</RRWS_S_CELL>
</CELL_DATA>
<AXIS_DATA>
<RRWS_SX_AXIS_DATA>
<AXIS>000</AXIS>
<SET>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000000</TUPLE_ORDINAL>
<CHANM>49E9DSTKHGHIYTUZRJ1XKDLC6</CHANM>
<CAPTION>Count of Unique Claim Numbers</CAPTION>
<CHAVL>49E9DT190F38HGEFXD49UFK1Y</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000001</TUPLE_ORDINAL>
<CHANM>49E9DSTKHGHIYTUZRJ1XKDLC6</CHANM>
<CAPTION>Current reserve</CAPTION>
<CHAVL>49E9DT8XJDOY02XW376M4HIRQ</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000002</TUPLE_ORDINAL>
<CHANM>49E9DSTKHGHIYTUZRJ1XKDLC6</CHANM>
<CAPTION>Payment Amount Posted in CM</CAPTION>
<CHAVL>49E9DTGM2CANIPHC918YEJHHI</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
</SET>
</RRWS_SX_AXIS_DATA>
<RRWS_SX_AXIS_DATA>
<AXIS>001</AXIS>
<SET>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000000</TUPLE_ORDINAL>
<CHANM>0IS_CSTATUS</CHANM>
<CAPTION>Reopened</CAPTION>
<CHAVL>1</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000000</TUPLE_ORDINAL>
<CHANM>INJDESCRP</CHANM>
<CAPTION>Disease</CAPTION>
<CHAVL>ZDI</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000000</TUPLE_ORDINAL>
<CHANM>0IS_CLAIMNT</CHANM>
<CAPTION>Whithead</CAPTION>
<CHAVL>0103619133</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES>
<RRWS_S_ATTRIBUTES>
<ATTRINM>ZIPCD1ST</ATTRINM>
<CAPTION />
<ATTRIVL>L24</ATTRIVL>
</RRWS_S_ATTRIBUTES>
</ATTRIBUTES>
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000001</TUPLE_ORDINAL>
<CHANM>0IS_CSTATUS</CHANM>
<CAPTION>Reopened</CAPTION>
<CHAVL>1</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000001</TUPLE_ORDINAL>
<CHANM>INJDESCRP</CHANM>
<CAPTION>Disease</CAPTION>
<CHAVL>ZDI</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES />
</RRWS_SX_TUPLE>
<RRWS_SX_TUPLE>
<TUPLE_ORDINAL>000001</TUPLE_ORDINAL>
<CHANM>0IS_CLAIMNT</CHANM>
<CAPTION>Smellie</CAPTION>
<CHAVL>0103630524</CHAVL>
<CHAVL_EXT />
<NIOBJNM />
<TLEVEL>00</TLEVEL>
<DRILLSTATE />
<OPT />
<SIGN />
<ATTRIBUTES>
<RRWS_S_ATTRIBUTES>
<ATTRINM>ZIPCD1ST</ATTRINM>
<CAPTION />
<ATTRIVL>M21</ATTRIVL>
</RRWS_S_ATTRIBUTES>
</ATTRIBUTES>
</RRWS_SX_TUPLE>
</SET>
</RRWS_SX_AXIS_DATA>
<RRWS_SX_AXIS_DATA />
</AXIS_DATA>
</SOURCE>
</asx:VALUES>
</asx:ABAP>
То, что я пытаюсь сделать, это получить такие результаты: -
L24 Reopened Disease Whithead 1 £ 12,131.80 £ 10,131.80
M21 Reopened Disease Smellie 1 £ 28,116.90 £ 7,616.90
Я использовал таблицу стилей отсюда http://forums.asp.net/p/1449946/3309441.aspx, но я могу только заставить ее произвести это: -
Reopened Disease Whithead L24
Reopened Disease Smellie M21
Пока это моя таблица стилей: -
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="col-count" select="3"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html lang="en">
<head>
<title>Example</title>
</head>
<body>
<table border="1">
<tbody>
<tr bgcolor="#9acd32">
<th>Claim Status</th>
<th>Injury Desc</th>
<th>Claimant</th>
</tr>
<xsl:apply-templates select="//AXIS_DATA/RRWS_SX_AXIS_DATA[2]/SET/RRWS_SX_TUPLE[position() mod $col-count = 1]" mode="row"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="RRWS_SX_TUPLE" mode="row">
<tr>
<xsl:apply-templates select=". | following-sibling::RRWS_SX_TUPLE[position() < $col-count]" mode="cell"/>
</tr>
</xsl:template>
<xsl:template match="RRWS_SX_TUPLE" mode="cell">
<td><xsl:value-of select="CAPTION"/></td>
<td><xsl:value-of select="ATTRIBUTES/RRWS_S_ATTRIBUTES/ATTRIVL"/></td>
</xsl:template>
</xsl:stylesheet>
Файл XML довольно сложный, я только что показал здесь немного, чтобы показать, что я пытаюсь сделать.
В конечном итоге, как только у меня появится эта работа, идея будет преобразовать XML-файл в другой XML-файл, имеющий простую структуру: -
<data>
<variable name="cc">
<row>
<column>L24</column>
<column>Reopened</column>
<column>Disease</column>
<column>Whithead</column>
<column>1</column>
<column>12,131.80</column>
<column>10,131.80</column>
</row>
<row>
<column>M21</column>
<column>Reopened</column>
<column>Disease</column>
<column>Smellie</column>
<column>1</column>
<column>28,116.90</column>
<column>7,616.90</column>
</row>
</varible>
</data>
Может кто-нибудь указать мне правильное направление, пожалуйста, или еще лучше предоставить мне необходимый код?