Sorry for the delay, yes that's what I am doing. I didn't realize your issue was on the file system. I haven't had issue validating from the file system.
France On Thu, Sep 11, 2014 at 2:57 PM, Hans-Juergen Rennau <hren...@yahoo.de> wrote: > Thank you, France, for sharing this. But I am not sure if I understand > well: it seems to me you copy DTDs from the database to the file system, > before using them for validation, and this seems to point at a problem with > resolving references which exists only if DTDs reside in the database, > rather than in the file system - is this so? But my problems with XSD > validation (involving imports) occur in the file system - databases are not > involved. > > Kind regards, > Hans-Juergen > > > France Baril <france.ba...@architextus.com> schrieb am 15:31 > Donnerstag, 11.September 2014: > > > I just want to second that suggestion! In the mean time, Hans, what I do > id this: > > *let **$xsd-file-path* := *fix-validation:update-file-system-dtds-xsds*( > *$xsd*) > *return **validate:xsd*(*$file*, *$xsd-file-path*) > > ... > > *declare function **fix-validation:update-file-system-dtds-xsds*(*$dtd* *as > **xs:string*) *as **xs:string*{ > *let **$to-file-sys*:= *for **$db-url* *in **db:list*('AppResources', > 'dtds') > *let* *$target-file* := *concat*('BaseX-DTDs/', > *substring-after*(*$db-url*, 'dtds/')) > (:let $debug := file:write('debug-dtd-2-file.xml', > $target-file):) > *let* *$dir* := *file:parent*(*$target-file*) > *let* *$create-dir* := *if* (*file:exists*(*$dir*)) > *then *() > *else **file:create-dir*(*$dir*) > *return **file:write*(*$target-file*, *db:open*( > 'AppResources', *$db-url*)) > > (: Get the new file path for db equivalent $dtd :) > *let* *$dtd-on-file-sys* := *concat*('BaseX-DTDs/', *substring-after* > (*$dtd*, 'dtds/')) > (: Return path to file system copy of the DTD :) > > *return * > *$dtd-on-file-sys* > }; > > Our XSDs change enough and our drop cycle is fast enough, that it's worth > doing this on each validation to avoid confusion between schema versions in > 2 locations. We need the .xsd in BaseX because we parse them for dynamic > documentation. Otherwise, you might want to keep the .xsd files outside of > BaseX. > > I don't remember if that worked with .xsd, but with .dtds and .css saving > the files as raw instead of text enabled the resolution of dependents. Of > course, if you need to xquery your schemas, saving them as raw is not an > option. > > > > -- France Baril Architecte documentaire / Documentation architect france.ba...@architextus.com