Tests that cx:railroad returns a single image if the nonterminal option is specified.
Test rr-004.xml is expected to pass.
<p:declare-step xmlns:cx="http://xmlcalabash.com/ns/extensions" xmlns:p="http://www.w3.org/ns/xproc" name="main" version="3.0">
<p:import href="https://xmlcalabash.com/ext/library/railroad.xpl"/>
<p:output port="result" sequence="true"/>
<cx:railroad inline-literals="false" nonterminal="B">
<p:with-input>
<p:inline content-type="text/plain">
S ::= A B
A ::= "a"
B ::= B1 | B2
B1 ::= B2
B2 ::= "b"
</p:inline>
</p:with-input>
</cx:railroad>
<p:for-each>
<p:identity>
<p:with-input select="p:document-properties(.)"/>
</p:identity>
<p:cast-content-type content-type="application/xml"/>
</p:for-each>
<p:wrap-sequence wrapper="properties"/>
</p:declare-step>
<s:schema xmlns:s="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
<s:ns prefix="svg" uri="http://www.w3.org/2000/svg"/>
<s:ns prefix="fn" uri="http://www.w3.org/2005/xpath-functions"/>
<s:ns prefix="array" uri="http://www.w3.org/2005/xpath-functions/array"/>
<s:pattern>
<s:rule context="/">
<s:assert test="properties">Result isn’t a properties document.</s:assert>
</s:rule>
</s:pattern>
<s:pattern>
<s:rule context="/properties">
<s:assert test="count(fn:map) = 1">There is not one maps.</s:assert>
</s:rule>
</s:pattern>
<s:pattern>
<s:rule context="/properties/fn:map[1]">
<s:assert test="fn:string['cx:nonterminal'] = 'B'">The nonterminal is incorrect.</s:assert>
<s:assert test="exists(fn:array[@key = 'cx:referenced-by'])">The references are incorrect.</s:assert>
</s:rule>
</s:pattern>
</s:schema>
Created test.