【发布时间】:2011-06-18 10:28:55
【问题描述】:
看起来这应该很容易,但是...
我正在尝试使用 XSLT 将 XML 文件的一部分提取为纯文本,丢弃其余部分。
所以从这样的示例输入中......
<?xml version="1.0" encoding="UTF-8"?>
<?oxygen RNGSchema="http://segonku.unl.edu/teianalytics/TEIAnalytics.rng"
type="xml"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" n="Wright2-0034.sgml.xml">
<teiHeader type="text">
<fileDesc>
<titleStmt>
<title>Header Title</title>
</titleStmt>
<publicationStmt>
<p>Published</p>
</publicationStmt>
<sourceDesc>
<p>Sourced</p>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<front>
</front>
<body>
<head>THE TITLE</head>
<div type="chapter" part="N" org="uniform" sample="complete">
<head>CHAPTER I</head>
<p>Some text.</p>
</div>
</body>
</text>
</TEI>
...我正在尝试获取包含在 <body> 标签及其所有子标签中的文本。在这种情况下,所需的输出是:
THE TITLE
CHAPTER I
Some text.
潜在的并发症:<body> 也可以存在于<front> 问题和/或<teiHeader> 中,所以我真正需要的是<body> 的子代当且仅当该标签是@ 的子代987654328@ 和<TEI>。
我已经尝试过像这样非常简单的 XSL ...
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/TEI/text/body">
<xsl:apply-templates select="."/>
</xsl:template>
</xsl:stylesheet>
...但它为我提供了文件中所有内容的纯文本,而不仅仅是 <body> 元素。
谢谢!
【问题讨论】:
-
好问题,+1。有关问题的解释以及完整、简短且简单的解决方案,请参阅我的答案。
-
您是否知道您将在 inline 元素、表格和列表中遇到的麻烦?您需要管理这些吗?
-
@empo 好点。幸运的是,我不需要为我的用例担心。