XSL使用正则表达式组结果+正则表达式路径之外的其他元素作为一个结果元素

时间:2016-09-07 14:20:34

标签: xslt

<xsl:variable name="groups" as="element(group)*">
<xsl:analyze-string regex="^^([0-9-]+)([A-Z ]*)[ ]*([\(](.*)[\)])*$" select="/fault/informations/restriction1">
<xsl:matching-substring>
  <group>
     <x><xsl:value-of select="regex-group(1)"/></x>
     <y><xsl:value-of select="regex-group(4)"/></y>
  </group>   
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
已经全部进入了 XSL Analyze-String -> Matching-Substring into multiple variables

但我的问题是如何在示例中使用它来进行连接 例如regex-group(1)与正则表达式路径之外的其他元素“/ fault / informations / restriction2”

如此简单的IMPUT XML:

<fault >
  <information>

    <reference1>22-00 X (AA - 03 StoLAT)</reference1>

    <opr>Sample sam (66-33) Sample</opr>

  </information>
</fault>

和OUTPUT我想拥有 在一个元素

<mytrouble>
  <trouble12>AA - 03 StoLAT , Sample sam Sample</trouble12>
</mytrouble>

所以rgex组4 - 来自<reference1>的文本内部()和来自opr的全文

PS 目前通过转型:

  

无法匹配具有所需类型的项目类型错误位置:     xsl:stylesheet / xsl:template / xsl:element / xsl:variable /     @as

     

详细信息XTTE0570:变量'groups'的必需项类型是     'element(Q {http://xml.event/1.0} group)',   提供的项目类型为'text()'

伟大的THANX

  

michael.hor257k

几乎就是 - 只是结果表明标题

<trouble12 xmlns:fn="http://www.w3.org/2005/xpath-functions">AA - 03 StoLATSample sam Sample</trouble12>

1 个答案:

答案 0 :(得分:0)

  

我的问题是如何在示例中使用它来连接例如regex-group(1)   与正则表达式路径之外的其他元素   “/故障/信息/ restriction2”

要引用xsl:analyze-string指令中的另一个节点,首先将其捕获到变量中 - 例如:

<xsl:variable name="opr" select="fault/information/opr" />  
<xsl:analyze-string regex="^^([0-9-]+)([A-Z ]*)[ ]*([\(](.*)[\)])*$" select="fault/information/reference1">
    <xsl:matching-substring>
        <trouble12>
            <xsl:value-of select="regex-group(4)"/>
            <xsl:value-of select="$opr"/>
        </trouble12>
    </xsl:matching-substring>
</xsl:analyze-string>