ServingXML:Ressources mapping:获取父节点值

时间:2016-03-31 20:56:05

标签: xml xpath

我有一个XML到JDBC的情况,我使用 ServingXML 更新了2个表和一个xml文件。 表是PRODUIT和PRODUITCATALOGUE。

我正在尝试在进行JDBC更新时使用子节点中父节点的字段(或在本例中属性)。 我必须在两个节点上重复NUMPRODUIT属性作为SQL更新中的密钥。

有没有办法在我的PRODUITCATLOGUE节点中重用父节点NUMPRODUIT?

我有这种XML结构:

<produit numproduit="18021901">     
        <qteinv>155</qteinv>        
        <produitcatalogue numproduit="18021901">
            <sap_statut>A</sap_statut>                  
        </produitcatalogue> 

我在资源文件中的映射:

<sx:inverseRecordMapping id="produitMapping">
    <sx:onSubtree path="/produits/produit">
      <sx:flattenSubtree recordType="produit">
        <sx:subtreeFieldMap select="@numproduit" field="numproduit"/>      
        <sx:subtreeFieldMap select="qteinv" field="qteinv"/>                
        <sx:subtreeFieldMap match="produitcatalogue" field="produitscatalogue">
          <sx:flattenSubtree recordType="produitcatalogue">    
            <sx:subtreeFieldMap select="@numproduit" field="numproduit"/> 
            <sx:subtreeFieldMap select="sap_statut" field="sap_statut"/>            
          </sx:flattenSubtree>
        </sx:subtreeFieldMap>

我希望能够在我的produitcatalogue节点上删除numproduit并运行和更新 更新produitcatalogue set ..其中id = @ produit / numproduit

此致

中号

1 个答案:

答案 0 :(得分:0)

我能够通过使用:

实现这一目标
 <sx:parameter name="numproduit" select="@numproduit"/>

然后在我的所有其他映射中使用$ numproduit引用它。

新的资源映射:

<sx:inverseRecordMapping id="produitMapping">
    <sx:onSubtree path="/produits/produit">
      <sx:flattenSubtree recordType="produit">
        <sx:parameter name="numproduit" select="@numproduit"/>
        <sx:subtreeFieldMap select="$numproduit" field="numproduit"/>      
        <sx:subtreeFieldMap select="qteinv" field="qteinv"/>                
        <sx:subtreeFieldMap match="produitcatalogue" field="produitscatalogue">
          <sx:flattenSubtree recordType="produitcatalogue">    
            <sx:subtreeFieldMap select="$numproduit" field="numproduit"/> 
            <sx:subtreeFieldMap select="sap_statut" field="sap_statut"/>            
          </sx:flattenSubtree>
        </sx:subtreeFieldMap>