(note: [rt]'s are little [RT]s ;)

In Forrest-land, we are using the ResourceExistsAction to handle the
possibility of different input formats.  Eg., if index.ehtml or
index.ihtml is present, it will be used in preference to index.xml:

<map:match pattern="**.xml">

  <map:act type="resource-exists">
    <map:parameter name="url" value="content/xdocs/{1}.ihtml" />
    <map:generate src="content/xdocs/{../1}.ihtml" type="html" />
    <map:transform src="resources/stylesheets/html2document.xsl" />
    <map:transform type="idgen" />
    <map:serialize type="xml"/>
  </map:act>

  <map:act type="resource-exists">
    <map:parameter name="url" value="content/xdocs/{1}.ehtml" />
    <map:generate src="content/xdocs/{../1}.ehtml" />
    <map:transform src="resources/stylesheets/html2htmlbody.xsl" />
    <map:serialize type="xml" />
  </map:act>

  <map:generate src="content/xdocs/{1}.xml" />
  <map:call resource="transform-to-document">
    <map:parameter name="src" value="content/xdocs/{1}.xml" />
  </map:call>
  <map:serialize type="xml"/>

</map:match>


I rather think that we are abusing Actions here, because
ResourceExistsAction doesn't actually perform any "action": it's just
a selector.

So I wrote a ResourceExistsSelector:

<map:select type="resource-exists">

  <map:when test="/content/xdocs/{1}.ihtml">
    <map:generate src="content/xdocs/{1}.ihtml" type="html" />
    <map:transform src="resources/stylesheets/html2document.xsl" />
    <map:transform type="idgen" />
    <map:serialize type="xml"/>
  </map:when>

  <map:when test="/content/xdocs/{1}.ehtml">
    <map:generate src="content/xdocs/{1}.ehtml" />
    <map:transform src="resources/stylesheets/html2htmlbody.xsl" />
    <map:serialize type="xml" />
  </map:when>

  <map:otherwise>
    <map:generate src="content/xdocs/{1}.xml" />
    <map:call resource="transform-to-document">
      <map:parameter name="src" value="content/xdocs/{1}.xml" />
    </map:call>
    <map:serialize type="xml"/>
  </map:otherwise>

</map:select>


It seems much clearer to have:

  <map:when test="/content/xdocs/{1}.ehtml">

than:

  <map:act type="resource-exists">
    <map:parameter name="url" value="content/xdocs/{1}.ehtml" />
 

And especially, the <map:otherwise> makes it very clear when that
section is executed.


So, can I check this in, deprecate ResourceExistsAction, and we all
live happily ever after?


--Jeff

Reply via email to