[Saxon-JS 2] Handling non-XML error responses
Martynas Jusevičius <martynas-tyFqBaoSXPC1Z/[email protected]> Mon, 2 Nov 2020 21:59:01 +0100
| Newsgroups | gmane.text.xml.saxon.help |
|---|---|
| Message-ID | <CAE35VmwT8DryNZzU9qADxC0--D2YKqpPZfSdPYykmcfdv61E+g@mail.gmail.com> |
Hi,
how do I handle 4xx error responses in a <ixsl:schedule-action
http-request> callback template when the response body is not HTML?
The pattern I'm using:
<xsl:template name="onResponseLoad">
<xsl:context-item as="map(*)" use="required"/>
<xsl:variable name="response" select="." as="map(*)"/>
<xsl:choose>
<xsl:when test="?status = 200 and ?media-type =
('application/rdf+xml', 'application/sparql-results+xml')">
<xsl:for-each select="?body">
<!-- do something with the XML body -->
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<!-- handle error, show $response?message -->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
When the error response contains an HTML body, the execution never
gets to the <xsl:otherwise> as I get an error:
code: "FODC0002"
message: "Misplaced or malformed XML: This page contains the following
errors:error on line 1 at column 2: StartTag: invalid element
name↵Below is a rendering of the page up to the first error."
name: "XError"
stack: "Error↵ at new q
(https://localhost:4443/static/com/atomgraph/linkeddatahub/js/saxon-js/SaxonJS2.rt.js:137:273)↵
at parseXmlFromString
(https://localhost:4443/static/com/atomgraph/linkeddatahub/js/saxon-js/SaxonJS2.rt.js:684:475)↵
at XMLHttpRequest.w.onload
(https://localhost:4443/static/com/atomgraph/linkeddatahub/js/saxon-js/SaxonJS2.rt.js:683:79)"
The responses with content type "text/html" are served by Tomcat and
look like this:
<!doctype html><html lang="en"><head><title>HTTP Status 400 – Bad
Request</title><style type="text/css">body
{font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b
{color:white;background-color:#525D76;} h1 {font-size:22px;} h2
{font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a
{color:black;} .line
{height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP
Status 400 – Bad Request</h1><hr class="line" /><p><b>Type</b> Status
Report</p><p><b>Message</b> Bad Request</p><p><b>Description</b> The
server cannot or will not process the request due to something that is
perceived to be a client error (e.g., malformed request syntax,
invalid request message framing, or deceptive request routing).</p><hr
class="line" /><h3>Apache Tomcat/9.0.31</h3></body></html>
I'm wondering at which point is Saxon-JS attempting to parse XML from
the response body and why does it attempt that if the content type is
not XML?
Martynas
_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[email protected]
https://lists.sourceforge.net/lists/listinfo/saxon-help