我假设评论中的引号是相同的,常规的 qoute 字符 " - 不是显示此问题时出现的印刷不同的开始和结束引号。
如果这个假设是错误的,只需将以下表达式中的标准引用替换为相应的引用。
使用(如果有问题的评论是文档中的第一个评论):
substring-before(substring-after(//comment(), '"'), '"')
这会产生字符串(不带引号):
“X”
对于引号中的第二个字符串,请使用:
substring-before(
substring-after(
substring-after(
substring-after(//comment(), '"'),
'"'),
'"'),
'"')
基于 XSLT 的验证(因为 XSLT 样式表必须是格式良好的 XML 文档,我们将表达式中的引号替换为实体 " —— 只是为了避免由于嵌套引号引起的错误):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
"<xsl:copy-of select="substring-before(substring-after(//comment(), '"'), '"')"/>"
=============
"<xsl:copy-of select=
"substring-before(substring-after(substring-after(substring-after(//comment(), '"'), '"'), '"'), '"')"/>"
</xsl:template>
</xsl:stylesheet>
当此转换应用于此 XML 文档时:
<html>
<body>
Hello.
<!-- Title: " X " Tags: " Y " -->
</body>
</html>
计算两个 XPath 表达式并将这两个计算的结果复制到输出中(用引号括起来以显示复制的确切字符串):
" X "
=============
" Y "