2017-04-10 14 views
1

나는이을 Docbook 5.0 문서가 유효하지 않은 이유를 궁금해 오전는 :, 링크/LINKEND

$ xmlstarlet val --err --xsd /usr/share/xml/docbook/schema/xsd/5.0/docbook.xsd test.xml 
test.xml:3.22: Element '{http://docbook.org/ns/docbook}section', attribute '{http://www.w3.org/XML/1998/namespace}id': '' is not a valid value of the atomic type 'xs:ID'. 
test.xml:6.25: Element '{http://docbook.org/ns/docbook}link', attribute 'linkend': '' is not a valid value of the atomic type 'xs:IDREF'. 
test.xml - invalid 

난 그냥 내부 링크를 원하는 :

여기
<?xml version='1.0' encoding='utf-8'?> 
<article xmlns='http://docbook.org/ns/docbook' xmlns:xlink='http://www.w3.org/1999/xlink' version='5.0'> 
<section xml:id='H_0'> 
<title>This is a title</title> 
<para> 
Blah <link linkend='H_0'>This is a link</link>blah blah blah.</para> 
</section> 
</article> 

내가 xmlstarlet에서 무엇을 얻을 문서, 섹션.

추가 : 다른 도구가 파일을 행복하게 처리 할 수 ​​있으므로 xmlstarlet 문제 일 수 있습니다. 어쨌든 누군가가 문제를 설명 할 수 있다면 기쁠 것입니다.

답변

1

아마도 xmlstarlet 버전의 버그일까요? 그것은 데비안에 나를 위해 작동 :

$ xmlstarlet --version 
1.6.1 
compiled against libxml2 2.9.4, linked with 20904 
compiled against libxslt 1.1.29, linked with 10129 
덧붙여

하지만, 질문에서의 DocBook 문서가 실제로-유효하기 때문에 DocBook으로 article되지 않습니다 :

$ xmlstarlet val --err --xsd /usr/share/xml/docbook/schema/xsd/5.0/docbook.xsd - 
<?xml version='1.0' encoding='utf-8'?> 
<article xmlns='http://docbook.org/ns/docbook' 
     xmlns:xlink='http://www.w3.org/1999/xlink' version='5.0'> 
<section xml:id='H_0'> 
<title>This is a title</title> 
<para> 
Blah <link linkend='H_0'>This is a link</link>blah blah blah.</para> 
</section> 
</article> 
- - valid 
    ^^^^^ 

은 여기 내 xmlstarlet 버전 정보입니다 요소는 title 또는 info 하위 중 하나 여야합니다.

http://tdg.docbook.org/tdg/5.0/article.html 참조 :

기사 - 기사.

시놉시스

시퀀스의 :

  • 하나의 :

    • 시퀀스의 :

      • 인터리브의 : titleabbrev?

      • subtitle?title
      • info? (db.titleforbidden.info)

    • info (db.titlereq.정보는)

One of과 결합이 titleinfo? 물음표의 부족은, 하나 title의 다른 또는 info이 필요하다는 것을 의미한다.

저는 XSD 스키마가이를 인식하지 못함에 놀랍습니다. 그러나 아마도 DocBook 문서가 실제로 유효한지 확인하기 위해 RelaxNG 스키마 (/usr/share/xml/docbook/schema/rng/5.0/docbook.rng 파일) 대신 유효성을 검사하는 것이 좋습니다.

+0

고맙습니다. 'xmlstarlet --version '은 실제로 빈 줄을 출력하지만, libxml 2.9.2와 libxslt 1.1.28은 Ubuntu를 사용하고 있습니다. –

+0

이상한. libxml2 버전의 버그 일 수도 있습니다. – sideshowbarker

+0

또한'info '는 Docbook의 확실한 가이드에서 언급되지 않았습니까? –