我的输入中有这个 XML:
<root> RH03051CDSIA280524CM1490301951171
610000001 93001 G0305101700000000004575EUR270524C000000000000,00IT44
620000001001270524270524D000000000649,3450TE ITDA00DPN145
630000001001HAYS SRL/AVIS BUDGET ITALIA S.P.A./AR885265/2355070853/B2B/RCUR/OE5OA5200P4907R3
640000001EUR270524C000000000000,00
EF03051CDSIA280524CM1490301951171 0000001 0000006
RH03051CDSIA280524CM1490301951349
610000001 93001 Z0305101699000078389249USD270524C000000001320,97IT72
640000001USD270524C000000001320,97
EF03051CDSIA280524CM1490301951349 0000001 0000004
</root>
我想迭代每个以“RH”开头的字符串来解析整个多行字符串。例如,在我的 xml 输入中,我有 2 个以 RH 开头的字符串:
我的xslt是这样的:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:ns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.03"
xmlns:BODY="urn:CBI:xsd:CBIBdyBkToCstmrStmtReq.00.01.02"
xmlns:LMSG="urn:CBI:xsd:CBIBkToCstmrStmtReqLogMsg.00.01.02"
xmlns:HE2E="urn:CBI:xsd:CBIHdrSrv.001.07"
xmlns:HTRT="urn:CBI:xsd:CBIHdrTrt.001.07"
xmlns:IDST="urn:CBI:xsd:CBIIdyStmtReqLogMsg.00.01.02"
xmlns:DLST="urn:CBI:xsd:CBIDlyStmtReqLogMsg.00.01.02"
xmlns:PRST="urn:CBI:xsd:CBIPrdcStmtReqLogMsg.00.01.02"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:str="http://exslt.org/strings"
xmlns:myns="py_ns"
extension-element-prefixes="exsl myns"
exclude-result-prefixes="exsl ns">
<xsl:output encoding="UTF-8" standalone="yes" indent="yes" method="xml" />
<xsl:template match="/">
<xsl:for-each select="//text[starts-with(., ' RH')]">
<xsl:value-of select="." />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
但是当我这样做时:
<xsl:for-each select="//text[starts-with(., ' RH')]">
<xsl:value-of select="." />
我什么也没看到。 我的代码正确吗? 相同的提示? 谢谢 问候
文本位于单个文本节点中,该节点是根元素的子元素;在 XSLT 3 中你可以使用例如
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
expand-text="yes">
<xsl:output method="text"/>
<xsl:template match="/" name="xsl:initial-template">
<xsl:value-of select="tokenize(root, '\n')[starts-with(., ' RH')]" separator=" "/>
</xsl:template>
</xsl:stylesheet>
输出是例如
RH03051CDSIA280524CM1490301951171
RH03051CDSIA280524CM1490301951349
XSLT 3 可以使用 saxonche 包与 Python 一起使用。`