精炼撒克逊产出

精炼撒克逊产出

作为后续这个问题,我现在有以下命令:

set +H && java -cp saxon-he-10.5.jar net.sf.saxon.Query -config:saxon.xml -s:rss.xml -qs:'//item/link!substring-after(., "_")'

撒克逊文件

<?xml version="1.0"?>
<!--
     For documentation on the contents of a Saxon configuration file, see
     http://www.saxonica.com/html/documentation/configuration/configuration-file/index.html
-->
<configuration edition="HE" xmlns="http://saxon.sf.net/ns/configuration"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://saxon.sf.net/ns/configuration config.xsd">
  <global optimizationLevel="10"
          stripSpace="ignorable"
          recoveryPolicy="doNotRecover"
          dtdValidationRecoverable="no" />
</configuration>

如何调整它以获得我想要的输出?

所需输出

92.204.241.167
181.24.239.244
193.243.195.66

当前输出

<?xml version="1.0" encoding="UTF-8"?>92.204.241.167 181.24.239.244 193.243.195.66

答案1

您可以在命令行上指定序列化属性,也可以将其作为查询本身的一部分,或者在配置文件中指定。在命令行上,使用例如

!indent=yes

请记住,对于某些 shell,!需要将其转义为\!.

在查询中,使用例如declare option output:indent "yes";

在配置文件中指定<serialization indent="yes"/>

您可以在此处考虑的序列化参数包括:

  • method=text- 抑制 XML 声明并防止转义特殊字符,例如&.

  • omit-xml-declaration=yes- 抑制 XML 声明但不阻止转义

  • item-separator=\n- 使用换行符而不是单个空格作为项目之间的分隔符。这里的问题是如何表示换行符。对于 shell,\n是最有可能的候选者,但可能需要用引号引起来,并且不同 shell 的情况可能有所不同。在查询中或在配置文件中,需要将其编写为&#xa;.

最后,作为使用项目分隔符序列化属性的替代方法,您可以将换行符作为查询本身的一部分引入,方法是将其编写为

(//item/link!substring-after(., "_")) => string-join("&#xa;")

相关内容