显示一个 table 显示每行每个子节点的父节点
Displaying a table showing parent with every child node per row
我有以下 XML 需要显示在 table 中,格式如下:
第 1 列:
要求
REQ-1
REQ-2
REQ-3
REQ-4
第 2 列:
验收测试
AT-1
AT-1
AT-1
AT-2
如何使用 XSLT1.0 实现此目的?
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Item type="Acceptance Test">
<jav_acc_id>AT-1</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-1</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-2</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-3</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
<Item type="Acceptance Test">
<jav_acc_id>AT-2</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-4</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
</root>
这就是我所拥有的(它创建了一个非常错误的输出,但我不知道如何修复它)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1">
<th style="text-align:left">Requirement</th>
<th style="text-align:left">Acceptance Test</th>
</tr>
<xsl:for-each select="descendant::Item">
<tr>
<td><xsl:value-of select="item_number"/></td>
<td><xsl:value-of select="jav_acc_id"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
给定以下格式正确的输入:
XML
<root>
<Item type="Acceptance Test">
<jav_acc_id>AT-1</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-1</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-2</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-3</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
<Item type="Acceptance Test">
<jav_acc_id>AT-2</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-4</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
</root>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/root">
<table border="1">
<tr>
<th>Requirement</th>
<th>Acceptance Test</th>
</tr>
<xsl:for-each select="Item/Relationships/Item">
<tr>
<td>
<xsl:value-of select=".//item_number"/>
</td>
<td>
<xsl:value-of select="../../jav_acc_id"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
将return:
结果
<table border="1">
<tr>
<th>Requirement</th>
<th>Acceptance Test</th>
</tr>
<tr>
<td>REQ-1</td>
<td>AT-1</td>
</tr>
<tr>
<td>REQ-2</td>
<td>AT-1</td>
</tr>
<tr>
<td>REQ-3</td>
<td>AT-1</td>
</tr>
<tr>
<td>REQ-4</td>
<td>AT-2</td>
</tr>
</table>
渲染为:
我有以下 XML 需要显示在 table 中,格式如下:
第 1 列:
要求
REQ-1
REQ-2
REQ-3
REQ-4
第 2 列:
验收测试
AT-1
AT-1
AT-1
AT-2
如何使用 XSLT1.0 实现此目的?
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Item type="Acceptance Test">
<jav_acc_id>AT-1</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-1</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-2</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-3</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
<Item type="Acceptance Test">
<jav_acc_id>AT-2</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-4</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
</root>
这就是我所拥有的(它创建了一个非常错误的输出,但我不知道如何修复它)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1">
<th style="text-align:left">Requirement</th>
<th style="text-align:left">Acceptance Test</th>
</tr>
<xsl:for-each select="descendant::Item">
<tr>
<td><xsl:value-of select="item_number"/></td>
<td><xsl:value-of select="jav_acc_id"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
给定以下格式正确的输入:
XML
<root>
<Item type="Acceptance Test">
<jav_acc_id>AT-1</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-1</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-2</item_number>
</Item>
</related_id>
</Item>
<Item type=" Acceptance Test Requirements ">
<related_id>
<Item type="Requirement">
<item_number>REQ-3</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
<Item type="Acceptance Test">
<jav_acc_id>AT-2</jav_acc_id>
<Relationships>
<Item type="Acceptance Test Requirements">
<related_id>
<Item type="Requirement">
<item_number>REQ-4</item_number>
</Item>
</related_id>
</Item>
</Relationships>
</Item>
</root>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/root">
<table border="1">
<tr>
<th>Requirement</th>
<th>Acceptance Test</th>
</tr>
<xsl:for-each select="Item/Relationships/Item">
<tr>
<td>
<xsl:value-of select=".//item_number"/>
</td>
<td>
<xsl:value-of select="../../jav_acc_id"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
将return:
结果
<table border="1">
<tr>
<th>Requirement</th>
<th>Acceptance Test</th>
</tr>
<tr>
<td>REQ-1</td>
<td>AT-1</td>
</tr>
<tr>
<td>REQ-2</td>
<td>AT-1</td>
</tr>
<tr>
<td>REQ-3</td>
<td>AT-1</td>
</tr>
<tr>
<td>REQ-4</td>
<td>AT-2</td>
</tr>
</table>
渲染为: