2013-03-28 1 views
0

내 문제는 다음과 같다 자식 노드를 삽입 .

그러나 어떤 경우에는

는 데이터는 내용이없는 쿼리 결과이기 때문에 데이터는 다음과 같습니다

<structures/> 

+ 오류가 표시되지 내 테이블의 결과.

<xforms:action ev:event="xforms-submit-done"> 
    <xforms:insert if="0 = count(instance('{./instance-name}')/root/node())" context="instance('{./instance-name}')/root/node()" origin="xforms:element('structure', '')" /> 
</xforms:action> 

: 나는 그런 일을 시도하고

<structures> 
    <structure id="0"/> 
</structures> 

:처럼 빈 인스턴스의 경우, 삽입하려고

는 단일 노드는 데이터가 보일 것이다 있도록 페이지의 속성에서 데이터를 볼 때 노드가 삽입되지 않았습니다.

나는 명백하게 잘못하고있는 것이 있습니까?

답변

0

ifcontext 표현 당신의 XPath에하는 오류가있는 것 같습니다 :

if="0 = count(instance('{./instance-name}')/root/node())" 
context="instance('{./instance-name}')/root/node()" 

당신은 중괄호 {}를 사용하고, 나는 속성 값 템플릿 (AVTs)의 동작을하는 가정합니다. 그러나 ifcontext 표현식은 이미 XPath 표현식이므로 AVT를 사용할 수 없습니다. 대신보십시오 :

if="0 = count(instance(instance-name)/root/node())" 
context="instance(instance-name)/root/node()" 

또한, instance-name 경로를 읽거나 표현을 쓸 때 명확하지 않을 수도 있습니다 뭔가를 기준으로합니다. 예 : instance('foo')/instance-name과 같은 절대 경로를 사용하여 더 명확하게 표시 할 것을 제안합니다.

당신은 다른 인스턴스의 구조를 제공하지 않기 때문에 내가 확실히 말할 수 있지만, 위의 표현들은 형태가 있다고 가정합니다 : 그 경우

<xf:instance id="foo"> 
    <some-root-element> 
     <root> 
      <structure/> 
     </root> 
    <some-root-element> 
</xf:instance> 

모르겠다을 당신이하려는 것.

마지막으로 count(something) = 0empty(something)으로 바꿀 수 있습니다.