I think I have followed the instructions but can't get it to work.  IE
doesn't support CSS before and after text.  I am also noticing quite a
few styling differences between Firefox and IE.  Unfortunately, I am
stuck presenting in IE 6.

Here is the code that I have.  I have included the <render:generic> element
so you can see the original declaration from the application.  I am
thinking it is a namespace issue.

<!-- My custom.xqy -->
xquery version '1.0-ml';

module namespace custom="http://www.eccnet.com";;
declare namespace xhtml="http://www.w3.org/1999/xhtml";;
declare namespace custom="http://www.eccnet.com";;

declare function custom:Component($context as node(), $matchedrule as
element(), $rules as element()+,
$params as xs:string*)) as element()+ {
{
element{QName(http://www.w3.org/1999/xhtml";, "p")}
<xhtml:b>Component:  </xhtml:b>map:get($context/string())
}
};

<!-- Modification in config.xqy -->

(:      <render:generic-elem match-name="Component" match-ns="" tag="p"
xmlns:render="http://marklogic.com/renderapi"/>:)

<render:custom match-name="Component" match-ns=""
xmlns:render="http://marklogic.com/renderapi";>
   <render:apply ns="http://www.eccnet.com"; name="Component"
at="/lib/custom.xqy"/>
</render:custom>

TIA

Betty

>
> Hi Betty,
>
> You might consider using the "render:custom" tag rather than overriding
> the generic-elem function.  If the "render:custom" element does not offer
> you enough granularity and you would like go beyond the rendering of a
> single XML element by tagname, then you may want to go the path of
> overriding the functions of standard.xqy directly.  I've included an
> explanation on the usage of each of these below.  They are preferable to
> editing the "render:generic-elem" directly.  Feedback about the
> explanations would be much appreciated - they may possibly get included in
> future documentation.  Let me know what you think.
>
> Cheers,
> David
>
>
> Overriding a Function from "standard.xqy"
>
> You can override a function in standard.xqy by editing the variable for
> the related function in config.xqy.
>
> For example, say I want to entirely change the function for the footer.  I
> find the following lines in config.xqy:
>
> declare variable $footer :=
>   xdmp:function(
>     fn:QName(
>       "http://marklogic.com/appservices/component";, "footer"));
>
> And I change it to:
>
> declare variable $footer :=
>   xdmp:function(
>     fn:QName(
>       "http://mycompany.com/custom-app";, "custom-footer"),
> "/lib/extension.xqy");
>
> Then, add the "custom-footer" function in "/lib/extension.xqy".  The
> function "asc:footer" in standard.xqy will no longer be used.
>
>
> Custom Rendering
>
> On the "Content" screen of the Applicaiton Builder, you are able to
> specify how certain XML elements get translated into XHTML (ex: each
> element <section> should be rendered as a <div>). Sometimes you want to
> have more control over how this XHTML gets rendered. The "render:custom"
> tag allows you to do just that.
>
> In /application/lib/config.xqy, you will find a variable named
> $TRANSFORMS. Within the element $TRANSFORMS, you will find elements with
> the namespace prefix "render". If you see the XML QName that you are
> interested in as one of the "render" elements (based on the
> @match-ns/@match-name attributes), then you can change the element tag
> name to "render:custom". If you do not see such an element, then you can
> add your own "render:custom" element as a sibling of the "render"
> elements.
>
> Each element with QName "render:custom" must have a child element with
> QName "render:apply" that has the attributes @ns (function namespace),
> @name (function name), and @at (library module) to specify the function
> name and library module for the custom rendering.
>
> Let's step through a basic example.
>
> I have used entity enrichment to mark up the text of my documents, and one
> of the marked up items are URLs which get marked up with the namespace
> "http://marklogic.com/entity"; and tag name "url". An example is:
>
>     <e:url
> xmlns:e="http://marklogic.com/entity";>http://marklogic.com</e:url>
>
> On the "Content" page, we specified that this QName should be rendered as
> a span, so we end up with the following element within the $TRANSFORMS
> variable in config.xqy:
>
>     <render:generic-elem match-name="url"
> match-ns="http://marklogic.com/entity"; tag="span"
> xmlns:render="http://marklogic.com/renderapi"/>
>
> This "render" element will cause the example URL above to be rendered as:
>
>     <span>http://marklogic.com</span>
>
> However, we want the URL to be rendered with an "a" tag and @href
> attribute, like this:
>
>     <a href="http://marklogic.com";>Mark Logic Corporation</a>
>
> To do this, we replace the "render:generic-elem" element with the
> "render:custom" element below:
>
>     <render:custom match-name="url" match-ns="http://marklogic.com/entity";
> xmlns:render="http://marklogic.com/renderapi";>
>         <render:apply ns="http://mycompany.com/custom-app";
> name="link-render" at="/lib/extension.xqy" />
>     </render:custom>
>
> Notice that we no longer need the @tag attribute.
>
> Within the file "/lib/extension.xqy" (which is a file that was added after
> the project was compiled), we have the function custom:link-render (where
> the namespace prefix "custom" corresponds to the namespace
> "http://mycompany.com/custom-app";). This function looks like this:
>
> declare function custom:link-render($context as node(), $matchedrule as
> element(), $rules as element()+, $params as xs:string*)
> as element(a)
> {
>     element {QName("http://www.w3.org/1999/xhtml","a";)}  {
>         attribute href { concat(if (not(starts-with($context/string(),
> "http://";))) then "http://"; else (), $context/string()) },
>         map:get($URL-MAP, $context/string())
>     }
> };
>
> Parameters:
>
> $context - the XML element to be transformed Example:
>
>     <e:url
> xmlns:e="http://marklogic.com/entity";>http://marklogic.com</e:url>
>
> $matchedrule - the element with QName "render:custom" that represents the
> custom transformation Example:
>
>     <render:custom match-name="url" match-ns="http://marklogic.com/entity";
> xmlns:render="http://marklogic.com/renderapi";>
>         <render:apply ns="http://marklogic.com/appservices/component";
> name="link-render" at="/lib/extension.xqy" />
>     </render:custom>
>
> $rules - a sequence of all the elements from the $TRANSFORMS variable with
> namespace "render" that refer to rules for tranformation
>
> $params - this variable must be included in the function signature.
> However, for the purposes of extending a generated application, this
> parameter should not be used within the function itself.
>
>
>
>
> David Amusin
> Software Engineer
> Mark Logic Corporation
> 999 Skyway Road
> Suite 200
> San Carlos, CA 94070
> +1 650 207 2308 Cell
> +1 650 655 2310 Fax
> [email protected]
> www.marklogic.com
>
>
>
> This e-mail and any accompanying attachments are confidential.  The
> information is intended solely for the use of the individual to whom it is
> addressed.  Any review, disclosure, distribution, or use of this e-mail
> communication by others is strictly prohibited.  If you are not the
> intended recipient, please notify us by returning this message to the
> sender and delete all copies.  Thank you for your cooperation.
>
>
>
>
>
>
>
>> ________________________________________
>> From: [email protected]
>> [[email protected]
>> ] On Behalf Of Betty Harvey [[email protected]]
>> Sent: Tuesday, June 30, 2009 1:27 PM
>> To: General Mark Logic Developer Discussion
>> Subject: [MarkLogic Dev General] Best Approach for Formatting
>> Content From      Application Builder
>>
>> I have started building an application using Application Builder.
>> For most of my elements modifying the <render:generic-elem> tag along
>> with CSS modifications work.
>>
>> There are some cases where I need more granularity in formatting.
>> The documentation doesn't specify how to modify the <item-detail>
>> component in the config.xqy file:
>>
>> <item-detail>
>> <render:generic-elem match-name="Revision" match-ns="" tag="tr"
>> xmlns:render="http://marklogic.com/renderapi"/>
>> </item-detail>
>>
>> I need to do more manipulation of what goes into table cells that our
>> outside the sequential flow of the information.
>>
>> Any advice/hints/tips is appreciated!
>>
>> Thanks!
>>
>>
>> /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
>> Betty Harvey                         | Phone: 410-787-9200 FAX: 9830
>> Electronic Commerce Connection, Inc. |
>> [email protected]                    | Washington,DC XML Users Grp
>> URL:  http://www.eccnet.com          | http://www.eccnet.com/xmlug/
>> /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\/\/
>> _______________________________________________
>> General mailing list
>> [email protected]
>> http://xqzone.com/mailman/listinfo/general
>
>
> _______________________________________________
> General mailing list
> [email protected]
> http://xqzone.com/mailman/listinfo/general
>


/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Betty Harvey                         | Phone: 410-787-9200 FAX: 9830
Electronic Commerce Connection, Inc. |
[email protected]                    | Washington,DC XML Users Grp
URL:  http://www.eccnet.com          | http://www.eccnet.com/xmlug/
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\/\/
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to