Кажется, это должно быть легко, но ...
Я пытаюсь использовать 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>
, если и только если этот тег является потомком <text>
и <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>
.
Спасибо!