我有以下xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader/>
<text>
<head n="3">Capitulo primeyro</head>
<pb facs="folio16r.jpg"/>
<div>
<p>... figurado <app>
<lem>pollo</lem>
<rdg wit="#A">pollo</rdg>
<rdg wit="#B">pello</rdg>
</app> Parayso ...</p>
<p> ... <app>
<lem>sacarõ</lem>
<rdg wit="#A">sacarõ</rdg>
<rdg wit="#B">ssaee</rdg>
</app> ...</p>
</div>
<pb facs="folio16v.jpg"/>
<div>
<p> .... os fisicos <app>
<lem>dessesperarom</lem>
<rdg wit="#A">desseperarom</rdg>
<rdg wit="#B">desesperõ</rdg>
</app> ... que assy <app>
<lem>saa</lem>
<rdg wit="#A">sooa</rdg>
<rdg wit="#B">saa</rdg>
</app> ...</p>
</div>
</body>
</text>
Run Code Online (Sandbox Code Playgroud)
使用我的XSL,我已经获得了3个不同的HTML(一个用于A,一个用于B,一个用于引理).我在应用程序的XSL中创建了一个模板:
<xsl:template match="app">
<xsl:variable name="appNumber" select="count(preceding::app) + 1"/> …Run Code Online (Sandbox Code Playgroud) 我有几个单独的XML文件,包含TEI中的历史字母.现在我想将它们合并为一个文件,并以日期作为标准.
A1.xml
<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:id="1">
<teiHeader>
<title>Letter 1</title>
<date when="19990202" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 1</p>
</text>
</TEI>
Run Code Online (Sandbox Code Playgroud)
和第二个文件,A2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:id="2">
<teiHeader>
<title>Letter 1</title>
<date when="20010202" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 2</p>
</text>
</TEI>
Run Code Online (Sandbox Code Playgroud)
第三个,A3.xml:
<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:id="3">
<teiHeader>
<title>Letter 3</title>
<date when="18880101" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 3</p>
</text>
</TEI>
Run Code Online (Sandbox Code Playgroud)
这些文件以连续文件名"A001.xml"到"A999.xml"命名,但不是按所需顺序命名.所以我的首选输出将是单个文件letters.xml:
<?xml version="1.0" encoding="UTF-8"?>
<CORRESPONDENCE>
<TEI xml:id="3">
<teiHeader>
<title>Letter 3</title>
<date when="18880101" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 3</p> …Run Code Online (Sandbox Code Playgroud) 我正在使用 XSLT(XSLT 2.0 很好)将 XML (TEI) 转换为可读的纯文本(有一些小的修改/挑战——为诗歌保留空间;使标题全部大写)。
到目前为止,一切都如我所愿,但为了可读性,我还想将通过此转换输出的一行文本的长度限制为某个值(例如 80 个字符宽),仅在空格处拆分(不要把单词分开,等等)。我想设置输出的最大长度(或者说,80 个字符),而不仅仅是输出第一个,比如说,80 个字符。
有没有人对最佳方法有任何建议?模板是否匹配所有内容text()然后使用 XSLT 的内置字符串函数?我试图想象使用字符串函数(string-length和substring或类似的)来做到这一点,但还没有任何运气。
(我可以很容易地使用 python 脚本单独执行此操作,所以也许“事后执行”可能是最好的答案。不过,我很想知道我是否忽略了一个简单的解决方案。)