XSLT转换的幻像输出

时间:2016-02-11 18:40:25

标签: xml xslt

我对使用xml和xslt作为排版工作流程的一部分感兴趣,通过使用xslt来翻译我的标签系统以匹配乳胶格式。两个解决了问题,我创建了一个小的xml文档,其中包含了我在第一个项目中需要处理的所有结构元素。

这个过程仍然非常初步,到目前为止,我一直在确保能找到并识别我的xml元素。但是,我得到了一些令我难以接受的特殊输出。

我的转型似乎正在回复那些根本没有被要求提供的信息以及信息。最奇怪的是,我在之前的测试中成功地请求了无关的信息。有谁知道为什么书签信息被包含在我的输出中?

谢谢!

XML:

<document>
  <book>
  <booktitle>This is Title of The Book</booktitle>
    <chapter>
    <chaptertitle>Chapter 1</chaptertitle>
        <paragraph>It only has one chapter, and very few words, because it is only a test.</paragraph>
        <paragraph>I've made two paragraphs, though. This paragraph has an endnote.<endnote>It is marked by an arabic numeral, and can be found at the end of the document</endnote></paragraph>
      <section>
      <sectiontitle>Brevity not withstanding...</sectiontitle>
       <paragraph>This book has a section, so that I can check the extent of the structure. Here we can find a margin note.<marginnote>They appear next to the body text, in the margin of the page.</marginnote></paragraph>
        <paragraph>Here's one last paragraph to test another feature. <verse>Here is some verse.// It is terse.<attribution>The Author</attribution></verse></paragraph>
      </section>
    </chapter>
  </book>
  <book>
  <booktitle>What If There Was Another Book?</booktitle>
  </book>
</document>

XSLT:

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

<xsl:template match="chapter">
    \chapter{<xsl:value-of select="chaptertitle"/>}
</xsl:template>

</xsl:stylesheet>

输出:

This is Title of The Book

    \chapter{Chapter 1}



What If There Was Another Book?

1 个答案:

答案 0 :(得分:3)

有内置模板可确保完成处理,请参阅https://www.w3.org/TR/xslt#built-in-rule。没有它们,您的模板永远不会被处理。因此,您需要确保拥有例如。

<xsl:template match="/">
  <xsl:apply-templates select="//chapter"/>
</xsl:template>

仅处理您要处理的元素,或者您需要确保文本节点的模板不输出任何内容:

<xsl:template match="text()"/>