我有一个要求,我需要准备带有问题和答案列表的XML。一个eform可以有多个文档。每个文档可以有多个问题。
我已为此准备了两个XML。请建议哪一个是好方法。
XML 1
<?xml version="1.0" encoding="utf-8"?>
<Eform>
<Documents>
<Document ID="c7ba73bb-c096-4099-ad70-fd47d2320d00">
<Questions>
<Question ID="1a4eb1e0-f657-483e-a8fa-59e9002d7c3f" Title="Doc 1 - Question 1 - Paraghraph" Answer="abc" />
<Question ID="d43fcf9d-91f6-43ce-b970-737aa0a51d36" Title="Doc 1 - Question 2 - Date" Answer="2014-10-08T18:30:00Z" />
</Questions>
</Document>
<Document ID="12d726d9-6e77-4657-ab8c-dddb7104a14a">
<Questions>
<Question ID="3a9d6172-90b6-420d-911a-43857e7c21a2" Title="Doc 2 - Question 1 - SelectList" Answer="Option 03" />
<Question ID="e4ae1e80-3fd5-4f6a-8d57-29166e399deb" Title="Doc 2 - Question 2 - File" Answer="" />
</Questions>
</Document>
<Document ID="9e3e79d0-0417-4ecd-8d5f-1881a5045705">
<Questions>
<Question ID="3b6c296e-8cc3-4ba5-9b16-7b5d0bfa6ce0" Title="Doc 3 - Question 1 - Text" Answer="abc" />
</Questions>
</Document>
<Document ID="328cae06-13c4-425e-adc0-e7c32d89b044">
<Questions>
<Question ID="d9877c67-12fc-4058-8dfe-3997335bce02" Title="Dropdown List" Answer="option 05" />
<Question ID="a56aae48-94b8-43d7-b17e-5eb0d16aeebb" Title="CheckBox List" Answer="Option 03" />
<Question ID="02ea17f1-8c34-4916-89ab-d6dfaf37a403" Title="RadioButton List" Answer="Option 03" />
</Questions>
</Document>
</Documents>
</Eform>
XML 2
<?xml version="1.0" encoding="utf-8"?>
<Eform>
<Document ID="c7ba73bb-c096-4099-ad70-fd47d2320d00">
<Question>
<ID>1a4eb1e0-f657-483e-a8fa-59e9002d7c3f</ID>
<Title>Doc 1 - Question 1 - Paraghraph</Title>
<Answer>abc</Answer>
</Question>
<Question>
<ID>d43fcf9d-91f6-43ce-b970-737aa0a51d36</ID>
<Title>Doc 1 - Question 2 - Date</Title>
<Answer>2014-10-08T18:30:00Z</Answer>
</Question>
</Document>
<Document ID="12d726d9-6e77-4657-ab8c-dddb7104a14a">
<Question>
<ID>3a9d6172-90b6-420d-911a-43857e7c21a2</ID>
<Title>Doc 2 - Question 1 - SelectList</Title>
<Answer>Option 03</Answer>
</Question>
<Question>
<ID>e4ae1e80-3fd5-4f6a-8d57-29166e399deb</ID>
<Title>Doc 2 - Question 2 - File</Title>
<Answer></Answer>
</Question>
</Document>
</Eform>
我想为上述任何一种XML生成XSLT,以便按如下方式生成HTML:
Question 1
Answer of Question 1
Question 2
Answer of Question 2
我第一次使用XML并尝试一些事情。尝试生成XSLT XML2如下。但没有提供所需的输出。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="Eform/Document">
<xsl:for-each select="Question">
<p><b><xsl:value-of select="Title"/></b></p>
<p><xsl:value-of select="Answer"/></p>
<br/>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
请建议正确的方法以及如何在XSLT中使用嵌套的foreach选择属性/值。如果还有其他更好的方法,请告诉我。
答案 0 :(得分:0)
对于您的第一种格式,请尝试:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="Eform/Documents/Document/Questions/Question">
<p><b><xsl:value-of select="@Title"/></b></p>
<p><xsl:value-of select="@Answer"/></p>
<br/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
你的第二种格式不是很好;如果是的话,这将适用于它:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="Eform/Document/Question">
<p><b><xsl:value-of select="Title"/></b></p>
<p><xsl:value-of select="Answer"/></p>
<br/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>