2017-12-20 12 views
2

oXygen 편집기를 사용하여 요소 oXygen 내부의 노드를 주석 처리하면 단순히 (:<foo>foo 1</foo>:)으로 감싸였습니다. 그런 다음 노드가 주석 처리되지 않았 음을 알았지 만 문자 노드로 접두사가 붙습니다. (: 접미사는 :) 인 텍스트 노드로 끝납니다.동봉 된 표현식의 주석 이외에 빈 시퀀스()가 필요합니까?

그런 다음 구문을 살펴본 후 주석 구문에 액세스하기 위해 동봉 된 표현식 {(:<foo>foo 1</foo>:)}을 사용해야한다는 것을 알았습니다.

그러나 BaseX와 Saxon 9.8은 {(:<foo>foo 1</foo>:)}을 기쁘게 받아 들일 수 있지만 Altova는 불만이 있으며 추가 빈 시퀀스 {(:<foo>foo 1</foo>:)()}이 필요합니다.

https://www.w3.org/TR/xquery-31/#doc-xquery31-EnclosedExpr은 XQuery 3.1에서 중괄호 안에있는 표현식은 선택 사항이며 기본값은 ()입니다.

XQuery 3.1에서는 빈 시퀀스없이 중괄호 안에있는 주석만으로도 충분합니까?

요약하면 Saxon과 BaseX는 <root>{(:<foo>foo 1</foo>:)}</root>을 사용하고 Altova는 잘못된 구문을 사용하여 <root>{(:<foo>foo 1</foo>:)()}</root>을 사용해야합니다.

XQuery 3.1에서도 여전히 필요합니까?

+2

는 XQuery 3.1 표현식은 선택한다 :

<hello>world <!-- Don't print me --> </hello> 

계산 된 요소 생성자는 여전히 XQuery에 주석을 사용합니다. 이것은 Altova 버그처럼 보입니다. –

답변

0

의견 작성자의 버그와 유사합니다. 이는 XQuery 편집기에서 흔히 볼 수 있습니다. 요소에서 내 - 그리고 가정이 direct element constructors를 사용하지 computed element constructors - XML ​​주석을 사용

element hello { 
    'world' (: Don't print me :) 
} 
+0

미안하지만, 나는 질문을 끝내지 않았고 의도하지 않게 태그를 추가하는 동안 내 목표는 노드를 주석으로 처리하고 생성 된 내용에 주석을 넣지 않는 것입니다. –

+0

@MartinHonnen 스펙에 대한 내 읽기는 빈 시퀀스가 ​​선택 사항이며 중괄호 (MarkLogic이이 방식으로도 작동 함)를 사용하여 암시한다는 것과 동일합니다. 나는 Altova 파서가 틀렸다고 가정합니다. 그러나 이것은 XQuery 주석을 고집하는 경우에만 문제가된다는 점에 유의하십시오.이 요소 내부에서 XML 주석을 사용하여이 문제를 완전히 피할 수 있습니다. 예 :'