我正在使用Ecrion的Design Studio Publisher来使用xml源设计模板。我试图使用xpath或xsl实现以下目标,我不知道如何
例如:我有以下xml文件
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT>
<PLAN>
<PLANNAME>Plan 1</PLANNAME>
<BENEFITS>
<INSURANCE>
<CATEGORY ID="1">
<LABEL>Insurance 1</LABEL>
<PREMIUM>Premium 1</PREMIUM>
<INNETWORK>In network 1</INNETWORK>
</INSURANCE>
<INSURANCE>
<CATEGORY ID="2">
<LABEL>Insurance 2</LABEL>
<PREMIUM>Premium 4</PREMIUM>
<INNETWORK>In network 4</INNETWORK>
</INSURANCE>
</BENEFITS>
</PLAN>
<PLAN>
<PLANNAME>Plan 2</PLANNAME>
<BENEFITS>
<INSURANCE>
<CATEGORY ID="1">
<LABEL>Insurance 1</LABEL>
<PREMIUM>Premium 2</PREMIUM>
<INNETWORK>In network 2</INNETWORK>
</INSURANCE>
<INSURANCE>
<CATEGORY ID="2">
<LABEL>Insurance 2</LABEL>
<PREMIUM>Premium 5</PREMIUM>
<INNETWORK>In network 5</INNETWORK>
</INSURANCE>
</BENEFITS>
</PLAN>
<PLAN>
<PLANNAME>Plan 3</PLANNAME>
<BENEFITS>
<INSURANCE>
<CATEGORY ID="1">
<LABEL>Insurance 1</LABEL>
<PREMIUM>Premium 3</PREMIUM>
<INNETWORK>In network 3</INNETWORK>
</INSURANCE>
<INSURANCE>
<CATEGORY ID="2">
<LABEL>Insurance 2</LABEL>
<PREMIUM>Premium 6</PREMIUM>
<INNETWORK>In network 6</INNETWORK>
</INSURANCE>
</BENEFITS>
</PLAN>
</DOCUMENT>
我希望以下面的表格式显示上面的内容
<table style="width: 252px;" border="0" cellspacing="0" cellpadding="0"><colgroup><col span="3" width="84" /> </colgroup>
<tbody>
<tr>
<td class="xl65" style="text-align: center;" width="84" height="21">Plan 1</td>
<td class="xl65" style="text-align: center;" width="84">Plan 2</td>
<td class="xl65" style="text-align: center;" width="84">Plan 3</td>
</tr>
<tr>
<td class="xl66" style="text-align: center;" colspan="3" height="21">Insurance 1</td>
</tr>
<tr>
<td class="xl65" style="text-align: center;" height="21">Premium 1</td>
<td class="xl65" style="text-align: center;">Premium 2</td>
<td class="xl65" style="text-align: center;">Premium 3</td>
</tr>
<tr>
<td class="xl65" style="text-align: center;" height="21">In network 1</td>
<td class="xl65" style="text-align: center;">In network 2</td>
<td class="xl65" style="text-align: center;">In network 3</td>
</tr>
<tr>
<td class="xl66" style="text-align: center;" colspan="3" height="21">Insurance 2</td>
</tr>
<tr>
<td class="xl65" style="text-align: center;" height="21">Premium 4</td>
<td class="xl65" style="text-align: center;">Premium 5</td>
<td class="xl65" style="text-align: center;">Premium 6</td>
</tr>
<tr>
<td class="xl65" style="text-align: center;" height="21">In network 4</td>
<td class="xl65" style="text-align: center;">In network 5</td>
<td class="xl65" style="text-align: center;">In network 6</td>
</tr>
</tbody>
</table>
<p> </p>
如果上表不起作用,请道歉。它应该看起来像这样
-------------------------------------------------
Plan 1 | Plan 2 | Plan 3
-------------------------------------------------
Insurance 1
-------------------------------------------------
Premium 1 | Premium 2 | Premium 3
-------------------------------------------------
In network 1 | In network 2 | In network 3
-------------------------------------------------
Insurance 2
-------------------------------------------------
Premium 4 | Premium 5 | Premium 6
-------------------------------------------------
In network 4 | In network 5 | In network 6
-------------------------------------------------
答案 0 :(得分:0)
给出格式良好的输入:
<DOCUMENT>
<PLAN>
<PLANNAME>Plan 1</PLANNAME>
<BENEFITS>
<INSURANCE>
<LABEL>Insurance 1</LABEL>
<PREMIUM>Premium 1</PREMIUM>
<INNETWORK>In network 1</INNETWORK>
</INSURANCE>
<INSURANCE>
<LABEL>Insurance 2</LABEL>
<PREMIUM>Premium 4</PREMIUM>
<INNETWORK>In network 4</INNETWORK>
</INSURANCE>
</BENEFITS>
</PLAN>
<PLAN>
<PLANNAME>Plan 2</PLANNAME>
<BENEFITS>
<INSURANCE>
<LABEL>Insurance 1</LABEL>
<PREMIUM>Premium 2</PREMIUM>
<INNETWORK>In network 2</INNETWORK>
</INSURANCE>
<INSURANCE>
<LABEL>Insurance 2</LABEL>
<PREMIUM>Premium 5</PREMIUM>
<INNETWORK>In network 5</INNETWORK>
</INSURANCE>
</BENEFITS>
</PLAN>
<PLAN>
<PLANNAME>Plan 3</PLANNAME>
<BENEFITS>
<INSURANCE>
<LABEL>Insurance 1</LABEL>
<PREMIUM>Premium 3</PREMIUM>
<INNETWORK>In network 3</INNETWORK>
</INSURANCE>
<INSURANCE>
<LABEL>Insurance 2</LABEL>
<PREMIUM>Premium 6</PREMIUM>
<INNETWORK>In network 6</INNETWORK>
</INSURANCE>
</BENEFITS>
</PLAN>
</DOCUMENT>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="cols" select="DOCUMENT/PLAN" />
<xsl:variable name="rows" select="DOCUMENT/PLAN[1]/BENEFITS/INSURANCE" />
<table>
<thead>
<tr>
<xsl:for-each select="$cols">
<th><xsl:value-of select="PLANNAME"/></th>
</xsl:for-each>
</tr>
</thead>
<tbody>
<xsl:for-each select="$rows">
<xsl:variable name="rownum" select="position()" />
<tr>
<th colspan="{count($cols)}"><xsl:value-of select="LABEL"/></th>
</tr>
<tr>
<xsl:for-each select="$cols">
<td><xsl:value-of select="BENEFITS/INSURANCE[$rownum]/PREMIUM"/></td>
</xsl:for-each>
</tr>
<tr>
<xsl:for-each select="$cols">
<td><xsl:value-of select="BENEFITS/INSURANCE[$rownum]/INNETWORK"/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:template>
</xsl:stylesheet>
将生成以下结果:
<?xml version="1.0" encoding="UTF-8"?>
<table>
<thead>
<tr>
<th>Plan 1</th>
<th>Plan 2</th>
<th>Plan 3</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="3">Insurance 1</th>
</tr>
<tr>
<td>Premium 1</td>
<td>Premium 2</td>
<td>Premium 3</td>
</tr>
<tr>
<td>In network 1</td>
<td>In network 2</td>
<td>In network 3</td>
</tr>
<tr>
<th colspan="3">Insurance 2</th>
</tr>
<tr>
<td>Premium 4</td>
<td>Premium 5</td>
<td>Premium 6</td>
</tr>
<tr>
<td>In network 4</td>
<td>In network 5</td>
<td>In network 6</td>
</tr>
</tbody>
</table>
呈现: