如何修复我的XSLT以便它如图所示显示我的XML?

时间:2018-05-13 11:50:37

标签: html xml xslt-1.0

我是XML新手,希望得到一些反馈。我试图显示我的XML,看起来像这样:

How I hope to get my XML to display

我似乎无法在模板中显示元素。 (显然,我没有正确构建它们)。我如何让title元素(Koha)显示为粗体和更大,就像在示例中一样?我只是感觉有点卡住,我的教授很忙,我希望有人可以提出下一步该做什么的建议?

我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<digitalLibrarySystem xmlns:xlink="http://www.w3.org/1999/xlink" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="http://www.pages.drexel.edu/~eom25/657/diglibschema/digitalLibrarySystem.xsd">
<systemMetadata>
<title>Koha</title>
<creator>by Katipo Communications</creator>
<subject>public libraries</subject>
<subject>bibliographic managemen</subject>
<subject>distributed library systems</subject>
<description>Koha was one of the the first open-source Integrated Library Systems. It is used and maintained by the worldwide library community.</description>
<date>2000</date>
<type>ILS</type>
<rights>Open-source</rights>
<identifier xlink:type="simple" xlink:href="http://http://www.koha.org/">http://www.http://www.koha.org/</identifier>
</systemMetadata>
<aboutRecord>
<recordCreator>Matthew Weidemann</recordCreator>
<creationDate>May 6, 2018</creationDate>
</aboutRecord>

到目前为止我的XSLT:

  
 <xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">
 <html>
 <body>
 <h1>"font-weight:bold"><xsl:value-of select="title"/></h1>
 <h2>by <xsl:value-of select="systemMetadata/creator"/></h2>
 <h3><xsl:value-of select="systemMetadata/subject"/></h3>
 <br/>
 <p>
 <h4><xsl:value-of select="systemMetadata/description"/></h4>
 <br/>
 </p>
  <h5><xsl:value-of select="systemMetadata/rights"/></h5>
  <br/>
  <h6><i>Record created by <xsl:value-of 
select="aboutRecord/recordCreator"/> on 
  <xsl:value-of select="aboutRecord/creationDate"/></i></h6>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

我对我认为的XPath感到困惑,任何建议都有帮助。

1 个答案:

答案 0 :(得分:0)

我重新整理了你的XSLT文件 如果你开始正确地缩进文件,你会更容易 并了解差异,开始理解XSLT的工作原理。

所以这是你的(略微修改过的)XSLT-1.0文件,它让你更接近你的目标:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- Create HTML header and stuff -->
    <xsl:template match="/">
        <html>
            <body>
                <xsl:apply-templates />       <!-- Apply the other templates -->
            </body>
        </html>
    </xsl:template>

    <!-- Process all systemMetadata sub-nodes -->
    <xsl:template match="systemMetadata">                
        <h1>
            <b><xsl:value-of select="title"/></b>
        </h1>
        <h2>
            <xsl:value-of select="creator"/>
        </h2>
        <h2>
            <xsl:value-of select="subject"/>
        </h2>
        <br/>
        <p>
            <h3>
                <xsl:value-of select="description"/>
            </h3>
        </p>
        <h3>
            <xsl:value-of select="rights"/>
        </h3>
    </xsl:template>

    <!-- Process all aboutRecord sub-nodes -->
    <xsl:template match="aboutRecord">      
        <h3>
            <i>Record created by <xsl:value-of 
select="recordCreator"/> on <xsl:value-of select="creationDate"/></i>
        </h3>
    </xsl:template>

</xsl:stylesheet>

现在您可以将其修改为漂亮打印结果 如果要创建漂亮的边框,请将第一个模板更改为

<!-- Create HTML header and stuff -->
<xsl:template match="/">
    <html>
        <body>
            <table border="1">
                <tr><td><xsl:apply-templates /></td></tr>
            </table>
        </body>
    </html>
</xsl:template>