DBXL does provide a way to retrieve the
individual component files of a document type’s XSN, so it is possible to use
this to get at a form’s XSD. The individual files can be accessed via this URL
format:
http(s)://<servername>/QdabraWebService/Forms/<doctypename>/<filename>
So for example:
http://dbxl.myserver.net/QdabraWebService/Forms/ExpenseReport/myschema.xsd
By default, an InfoPath form’s main
schema is in a file called myschema.xsd, but if the form uses a custom
schema, it could have a different file name. If there’s a need to determine
this dynamically, one can use the same URL format as above to retrieve the
form’s manifest.xsf file, which will indicate what the main schema file
is named:
<xsf:documentSchemas>
<xsf:documentSchema location="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-05-02T06:22:50
myschema.xsd"
rootSchema="yes"/>
</xsf:documentSchemas>
By default, DBXL only allows access to
certain types of template files, but additional ones can be enabled by adding
entries to the list of httpHandlers in web.config. New entries could be added
for */*.xsd and */*.xsf to enable retrieving the manifest and
XSD:
< location path="Forms">
<system.web>
<httpHandlers>
<
add verb="*" path="*/*.xsn"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
< add verb="GET,HEAD" path="*/*.xsl"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
< add verb="GET,HEAD" path="*/*.xml"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
< add verb="GET,HEAD" path="*/*.jpg"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
<
add verb="GET,HEAD" path="*/*.gif"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
<
add verb="GET,HEAD" path="*/*.png"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
< add verb="GET,HEAD" path="*/*.jpg"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
< add verb="GET,HEAD" path="*/*.htm"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
< add verb="GET,HEAD" path="*/*.css"
type="Qdabra.Dbxl.Implementation.DocumentRetrieval.TemplateHandler,Qdabra.Dbxl.Implementation"
/>
</httpHandlers>
</system.web>
< /location>