2010-11-23 10 views
0

orbeonを使用していますが、XBLで定義されている子要素を読み取ろうとしています。ここで私のxformの定義はどのようになっていますか単純なXpath - XBLの子要素を読み取る

<fr:foobar ref="mynode" constraint="unique"> 
    <fr:foo from="abc" to="def"> 
    <fr:bar key="id" name="primary" /> 
    </fr:foo> 
</fr:foobar> 

XBLで私は簡単に子要素を読み取ることができないようです。私は明らかに単純なものが欠けている。

<xforms:group xxbl:scope="inner"> 
    <!-- works --> 
    <xxforms:variable name="foocontext"> 
     <xxforms:sequence select="{fr:foo/@from}" xxbl:scope="outer" /> 
    </xxforms:variable> 

    <!-- does not works -->  
    <xxforms:variable name="barcontext" as="node()?"> 
     <xxforms:sequence select="{fr:foo/fr:bar}" xxbl:scope="outer" /> 
    </xxforms:variable> 
</xforms:group> 
+0

私はいくつかの点を明確にするためにあなたの質問を更新することができます質問の形で答えを掲載し、それを更新します。 – avernet

答えて

1

AVTは常にテキストを返します。だから{fr:foo/fr:bar}{string(fr:foo/fr:bar)}に相当します。この場合、あなたが期待することはできません。これはトリッキーなものであり、私は2つのソリューションを参照してください。

  1. は、XFormsの変数ことを定義しないでください。代わりに、XSLTの構造を反復処理し、生成するXFormsを生成します。これは「最も可能性が高い」最良の方法です(しかし、あなたがしようとしていることさえ知らないので、私が言うことは信じられません)。
  2. 本当にその変数が必要な場合は、XSLT(<xsl:copy-of>)を持つインスタンスにこれらの<fr:bar>要素をコピーし、<xxforms:variable>でそのインスタンスのノードをポイントする必要があります。
+0

これは簡単なことですが、私は基本から始めることはできませんでした。私は$ barcontentの値がfr:barノードだと思って、$ barcontent/@ idで属性値を取得する予定でした。私は複数のfr:barを持っていますが、私はその条件を使用します([@ id = 1])。では、変数にfr:barノードをどのようにして選択するのですか? – BinnyG

+0

OK、それを得ました。私は今、問題の理解を深めることに基づいて答えを更新しました。そして、今はより意味をなさないことを願っています! – avernet

関連する問題