Hi Larry, Thanks for this. I tested your example, and it validates. I also created my own small assembly XIncluding the resources element, with actual files to pull in, and it validates and reassembles as expected. Good work. Bob Stayton Sagehill Enterprises
bobs@sagehill.net On 2/12/2019 8:31 PM, Larry Rowland wrote: This has certainly been an instructive exercise. I have not worked with documentation for long enough that I m rusty on how modern tools like master files work in an editor like oXygen. Attached please find a ZIP file with the following in it: -rwxr-x---@ 1 lrr staff 9880 Feb 12 21:07 assembly-with-xinclude-2.xml -rwxr-x---@ 1 lrr staff 17606 Feb 12 14:03 assembly-without-xinclude-2.xml -rw-rw-r--@ 1 lrr staff 625363 Feb 12 20:35 assembly.rng -rw-rw-r--@ 1 lrr staff 649396 Feb 12 20:55 assemblyxi.rng -rw-r--r--@ 1 lrr staff 1169 Feb 12 21:00 creation-chapter-module.xml -rw-r--r--@ 1 lrr staff 6780 Feb 12 20:32 helpsystem-structure.xml -rw-r--r--@ 1 lrr staff 1682 Feb 12 20:32 resource-block.xml -rw-r--r-- 1 lrr staff 834 Feb 12 19:53 xinclude-assembly.xpr The assembly files are referenced by assembly-with-xinclude-2.xml and assembly-without-xinclude-2.xml. I have added one element to the start definition in assembly.rng to allow a module as root of a file and modified assemblyxi.rng to allow xi:include in various places (mostly the direct descendants of the assembly, but also for external references to a module). I also made all of the DocBook elements that allow xi:include allow it in this file. The three files resource-block.xml, helpsystem-structure.xml and creation-chapeter-module.xml are portions of the original file I moved into eternal files and referenced via xi:include. In order to make things validate in oXygen, two things have to be done: Turn on Enable Xinclude Parsing under Preferences->XML->XML Parser. Enable Master file processing from the Project menu. Once it is enabled, a Master Files folder shows up in the project view and you can create a link into it by dragging the assembly-with-xinclude-2.xml file into it (the file is linked rather than moved). Not sure how to do the same things in other editors, but doing this allows validation in any of the files that are included into the master file. This is NOT buildable since the referenced resources are not included (not sure they were ever created) but it is valid and demonstrates that it works with modern validation schemes that understand the master file model. Sorry for the confusion not sure how I ended up with an early version of the assembly schema as the starting point for this, but this round was done based on V5.2b05 and should be reasonable. If this bounces from the mailing list since I am mailing it from home, I ll resend it tomorrow morning from work. Regards, Larry Rowland On Feb 12, 2019, at 4:01 PM, Rowland, Larry <
larry.rowland@hpe.com > wrote: I hate to admit this, but it appears I combined an early proposal of the assembly schema (that still allowed fileref attributes instead of using href and other things that were not implemented) with parts of the 5.1 and 5.2 versions of the DocBook schema. It s not really worth trying to get thigns working based on the schema I sent. Don t know how that happened, but as I was trying to work through things, it became obvious that things were just wrong. I am pulling down a clean copy of the V5.2b05 release of the schema and will redo things to get a clean schema based on the current working schema. My working model is going to be: 1. Add the modifications for xi:include to assembly.rng to create a new assemblyxi.rng. 2. Modify the old assembly-sample-6.xml (renaming it) to make it validate against the existing assembly schema. 3. Break it up into chunks in other files and reference them using the xi:include to create a new version of the file with includes at various levels to reflect the discussion at
https://github.com/docbook/docbook/issues/54 . I apologize for the confusion. I worked on this part of last night and parts of today trying to understand what was happening and why it was so confusing and it took most of that to figure out what was going on. I also realized I made a mistake in the assembly extension when I copied how include was implemented in other areas of DocBook and will fix that problem. I ll get this to the team as soon as possible. Regards, Larry Rowland From:
docbook-tc@lists.oasis-open.org [ mailto:
docbook-tc@lists.oasis-open.org ] On Behalf Of Rowland, Larry Sent: Tuesday, February 12, 2019 7:38 AM To: Bob Stayton <
bobs@sagehill.net >;
docbook-tc@lists.oasis-open.org Subject: RE: [docbook-tc] testing xinclude in assembly I think I have found the issue and will have a fix in place as soon as possible. I m somewhat concerned that the schema has an ordered sequence of valid elements and I m going to end up with xi:include elements being valid anywhere in the sequence. I think that means anything can be pulled in anywhere. Maybe I don t understand enough about xi:include to be doing this change. I m way behind on things for tomorrow s meeting. Regards, Larry Rowland From:
docbook-tc@lists.oasis-open.org [ mailto:
docbook-tc@lists.oasis-open.org ] On Behalf Of Bob Stayton Sent: Monday, February 11, 2019 5:32 PM To:
docbook-tc@lists.oasis-open.org Subject: Re: [docbook-tc] testing xinclude in assembly Yes, that one validated for me as well. But when you resolve the XInclude, the resulting file is not valid because a resources element appears after the structure element. This file does not validate, even though the result after XInclude resolution is valid: <assembly> <xi:include href = ./resource-block.xml /> <structure>...</structure> </assembly> Bob Stayton Sagehill Enterprises
bobs@sagehill.net On 2/11/2019 3:50 PM, Scott Hudson wrote: Hm. This example validated against that schema --Scott From: <
docbook-tc@lists.oasis-open.org> on behalf of Bob Stayton <
bobs@sagehill.net> Date: Monday, February 11, 2019 at 4:49 PM To:
docbook-tc@lists.oasis-open.org <
docbook-tc@lists.oasis-open.org> Subject: Re: [docbook-tc] testing xinclude in assembly Well, the assembly schema says resources elements should appear before any structure elements. The XInclude is pulling in a resources element, so this example would place it after structure, which is not valid. Bob Stayton Sagehill Enterprises
bobs@sagehill.net On 2/11/2019 2:39 PM, Scott Hudson wrote: I think the include is in the wrong location? Shouldn t it be more like this: <?xml version= 1.0 encoding= UTF-8 ?> <?xml-model href= type= application/xml schematypens=
http://relaxng.org/ns/structure/1.0 ?> <assembly xmlns =
http://docbook.org/ns/docbook xmlns:xi =
http://www.w3.org/2001/XInclude > <resources> <resource xml:id = local-file fileref = some/path/file.xml /> <resource><xi:include href = stock-blocks.xml xpointer = standard.disclaimers parse = xml > <xi:fallback> <para><emphasis role = strong > Boilerplate got lost! </emphasis></para> </xi:fallback> </xi:include></resource> </resources> <structure> <info> <title> My Test Assembly </title> <author> <personname> Some Poor Volunteer </personname> <affiliation><orgname> DocBook TC </orgname></affiliation> </author> </info> <module resourceref = standard.disclaimers /> </structure> <xi:include href = ./resource-block.xml /> </assembly> ? Thanks, --Scott From: <
docbook-tc@lists.oasis-open.org> on behalf of Bob Stayton <
bobs@sagehill.net> Date: Monday, February 11, 2019 at 12:24 PM To: DocBook Technical Committee <
docbook-tc@lists.oasis-open.org> , Rowland, Larry <
larry.rowland@hpe.com> Subject: [docbook-tc] testing xinclude in assembly Hi Larry, I loaded the assemblyxi.rng into Oxygen XML for testing. I opened your test file that you included in the zip file assembly-with-xinclude.xml and I see that it XIncludes a file containing a <resources> element. But when I try to add a structure element after the <xi:include> element, it won't let me. I think a common scenario would be to XInclude a common resources file and then create a structure using those resources. I am able to add a structure element after the literal resources element in the test file and before the xi:include, but not after the xi:include. I don't see what in the schema prevents that. -- Bob Stayton Sagehill Enterprises
bobs@sagehill.net