【发布时间】:2020-11-09 20:05:39
【问题描述】:
我正在开发一个 Java 应用程序,其中包括 Saxon 包,以使用 XSLT 匹配 XML 中的文本字符串并返回 ISBN 号。
以下是库 XML 的示例:
<Library>
<Book>
<Title>Easy Book</Title>
<ISBN>978-3-16-148410-0</ISBN>
</Book>
<Book>
<Title>Tiger's Naptime Book</Title>
<ISBN>978-3-16-148410-1</ISBN>
</Book>
<Book>
<Title>How to "Capture" a Clever Tiger's Toe</Title>
<ISBN>978-3-16-148410-2</ISBN>
</Book>
</Library>
使用 XSLT 很容易找到第一本“简易书”:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="urn:developJava.com/NotWorking">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="Book/Title[text()='Easy Book']">
<xsl:value-of select='../ISBN' separator= ","/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
但是,例如,我找不到标题:
<Title>Tiger's Naptime Book</Title>
使用这个 XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="urn:developJava.com/NotWorking">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="Book/Title[text()='Tiger's Naptime Book']">
<xsl:value-of select='../ISBN' separator= ","/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
或查找:
<Title>How to "Capture" a Clever Tiger's Toe</Title>
使用这个 XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="urn:developJava.com/NotWorking">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="Book/Title[text()='How to "Capture" a Clever Tiger's Toe']">
<xsl:value-of select='../ISBN' separator= ","/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
它正在处理标题中&quot; 和&apos; 的嵌入文本分隔符,这是问题所在。非常感谢您对如何处理此 XML/XSLT 的想法。
谢谢!
【问题讨论】: