Subject: Re: [xsl] what's the best way to validate input parameters to a stylesheet? From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 19 Mar 2021 22:08:06 -0000 |
Hey Chris, You could pull the logic into a static variable: <xsl:variable name="doc-fails" as="xs:boolean" select="matches($from.att, '^@\w+=\w+$') and matches($to.att, '^@\w+=\w+$')"/> then <xsl:template match="/[$doc-fails]"> ... this document fails ... </xsl:template> Make the @priority explicit if you want to give a better hint. It's really factoring out the choose into a template match in the normal way. You could even do it without the variable for maximum mystery. Cheers, Wendell On Fri, Mar 19, 2021 at 5:58 PM Chris Papademetrious christopher.papademetrious@xxxxxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Hello! Ibve got a stylesheet that takes two string parameters: > > > > <?xml version="1.0" encoding="UTF-8"?> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0"> > > > > <xsl:param name="from.att" as="xs:string"/> > > <xsl:param name="to.att" as="xs:string"/> > > > > Both parameters are expected to be strings in the form of > > > > @attributename=value > > > > At first I tried adding a check at the top level of the stylesheet: > > > > <xsl:if test="not(matches($from.att, '^@\w+=\w+$') and matches($to.att, > '^@\w+=\w+$'))"> > > <xsl:message terminate="yes">Input parameters must be in the form > '@attributename=value'.</xsl:message> > > </xsl:if> > > > > but <xsl:if> isnbt allowed at the top level of a stylesheet. > > > > So for now Ibm doing this in a bdummyb root element template that doesnbt > do anything: > > > > <!-- this doesn't actually do anything other than validate our input > parameters --> > > <xsl:template match="/" priority="20"> > > <xsl:choose> > > <xsl:when test="matches($from.att, '^@\w+=\w+$') and > matches($to.att, '^@\w+=\w+$')"> > > <xsl:next-match/> > > </xsl:when> > > <xsl:otherwise> > > <xsl:message>Input parameters must be in the form > '@attributename=value'.</xsl:message> > > <xsl:copy-of select="."/> > > </xsl:otherwise> > > </xsl:choose> > > </xsl:template> > > > > but I feel like therebs probably a better way. Is there? > > > > ----- > Chris Papademetrious > > Tech Writer, Implementation Group > > (610) 628-9718 home office > > (570) 460-6078 cell > > > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/174322> (by > email <>) > -- ...Wendell Piez... ...wendell -at- nist -dot- gov... ...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org... ...github.com/wendellpiez... ...gitlab.coko.foundation/wendell...
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] what's the best way to valida, Chris Papademetrious | Thread | Re: [xsl] what's the best way to va, Chris Papademetrious |
[xsl] what's the best way to valida, Chris Papademetrious | Date | Re: [xsl] what's the best way to va, Chris Papademetrious |
Month |