Betty's Musings

Am I finally a blogger – I think not!

RenderX and Accessibility

No comments

Recently I had a requirement to make PDF’s from XSL-FO Section 508 compliant. The information was hard to find but the execution for creating an accessible (Tagged PDF) was relatively simple. I am including the steps that are needed to obtain accessibility. Everyone in the process needs to be aware of accessibility requirements. The XSL-FO can only provide full-accessibility if the authors or creators of the XML are cognizant of what is needed in the XML documents to make accessible PDF’s and HTML documents.

RenderX Configuration

The following option should be added to the xep.xml file located in the location where RenderX is installed:

<option name="ENABLE_ACCESSIBILITY" value="true"/>

Alternative Text in Graphics

The ‘role’ attribute should be populated in the element with descriptive text about the graphic.


Ensure that all tables have a element.

Article on MarkLogic and Excel

No comments

I just posted an article on MarkLogic and Excel ( Enjoy!

HeyTell Relationships

1 comment

This morning I was driving in my a car and I received a HeyTell from my Grandkids, speaking in robot but they said ‘I love you’!  It got me thinking about my Grandparents and my communications with them.  I don’t remember ever speaking to any of my Grandparents on the phone.  Long distance phone calls were usually only for emergencies or quick messages from my parents because of the cost.

People often talk about the lack of connection because of email.  I admit I am someone who would prefer sending email than talking on the phone (which btw is a 180 degree reversal from when I was a teenager) but on the other hand our connections to family, friends and colleagues have really changed because of the technology available to us today.

It has been 45 days since the T1 debacle journey has begun.  As of this writing the network has been down this morning for 1 1/2 hours  At the moment I can’t see that there is any end in-sight.  I currently have 3 working internet connections that nothing is attached too and Megapath cannot tell me when they can hook up the bonded T1 line which should solve the outage problems.  I started monitoring the T1 line through Pingdom on April 11th. As of right now there has been a total of 24 hours outage – mainly during prime business hours.  The only positive is that on 39 I got a direct telephone number I can call but it hasn’t seemed to make a difference in reliability of my service.

In 45 days I have missed numerous important meetings, calls and deliverables while trying to solve this problem.

I have heard from other companies who have ‘moved to the cloud’ that the experience is both good and bad.  I hadn’t considered ‘moving to the cloud’ because in my first year of business (1995) I had a server co-located on a T3 line.  The bandwidth was good but when problems arose (usually due to my error) it was inconvenient to fix.  I have enjoyed having the control over ‘my domain’ and think that I would find it difficult to go back to letting go of control.

Day 45 Pingdom Graph

Graph since 4/11

Megapath and T1 Issues

No comments

It has now been 42 days since my T1 problems have started.  ECC has been in business for 16 years and for the last 15 years has had a T1 line.  In the 15 years the T1 provider company has changed due to acquisition but I have essentially stayed with the same company for the entire 15 years (Planetcom, Epoch, Netifice and now Megapath) through each of these transitions.

In the past the support has been excellent – if there was a problem with the line the support person usually called me to let me know there was a problem before I even knew the network was down.  I relied on this level of service.

The last 42 days have been a trial and an experience on what not to do with customer service.  In a past lifetime I was a user support specialist for Scientific and Engineering computing for the Navy at Carderock and supported everything from PC’s and Mac’s to a Cray and VAX’s (young people won’t know what these are) so I know a little a bit about user support.

The saga started on March 7th with the network down.  I called Megapath, gave the support person my client number and was immediately told “That is not a valid client number”.  I said “yes it is”, and he said “No Maam it isn’t, look on your bill to find the client number”.  After about 5 minutes of arguing he finally said ‘Oh yes you are right, here it is’.  I have gone through this argument almost  2 to 3 times a day fro 42 days, including today.  So much for being an old reliable customer they make it hard for myself and support personnel to find me.

Also, on day 2 I was contacted by Megapath sales office about renewing my service and getting a bonded T1 for reliability.  I told them yes lets do it and I signed a contract for 2 year extension and to get another line pulled for a bonded T1. I regret this decision because in the last 15 days I have been told by Megapath support du jour, “Your line hasn’t been installed yet”, including today.   Verizon was right on top of this and installed 3 new T1 lines (I am not sure why 3 lines were installed only 1 was ordered – and I agreed to pay to get one installed – I haven’t got the bill yet so I am holding my breath).  At this time the install is slated for Tuesday, April 19 (Day 44).

On day 29 (by this time I have to admit I was not as patient as I should have been) the support person du jour  reiterating that my problem was an inside wiring problem and it would cost to have a Covad (Megapath recently purchased Covad) person come out and troubleshoot the problem.  I told the support person du jour – “I don’t care I need it fixed”.  The Covad support person was supposed to arrive between noon and 4 on Day 31.  Five o’clock rolls around and no Covad.  I called – pretty mad – and Megapath support said “I don’t know what happened but they can’t come today”  the earliest I can get them their was Day 33.  I said that was unacceptable because I had been waiting and it was now Day 31 and I had a trip planned leaving Day 33.  The support person said he would see what he could do.  The Covad support person was scheduled for Day 32 between noon and 4 again.  Five o’clock rolls around and no support person.  Finally he arrives at 6 :30.  He looked like he was 16 with a backpack and untied tennis shoes – I still had confidence my problem would be solved.  We explained the problem he looked at the wiring and said “Nothin I can do”.  I said “You have to be able to do something”.  “No I will put it in my report” – and he was gone!

Day 33 all was quiet and I thought — wow maybe the report worked?  Day 34 started it all again!  On Day 35 I started Twittering in earnest when the support du jour said when I asked “Who do I call to get this escalated” and was told “I don’t know – call the sales number”.  I took his advice, called the sales office, who obviously couldn’t help me, put me on hold and sent me back to the support number to be put on hold again. I have tweeted everyday since – I know my followers on Twitter, Linked-in and Facebook are probably tired of my constant ‘tweets’ about poor customer support.

On day 39 I was finally escalated to 2nd tier support.  I don’t know if it was the tweets or me calling the ‘Sales Retention Office’ threatening to cancel my service.  Second line support was more helpful.  Mike gave me his direct number so I didn’t have to go through the phone maze to get to the final support number.  You can’t believe having a real person to call helped my anxiety level.  Mike was very courteous and helpful.

Mike also said that it was probably and inside wiring problem and that it would cost to get a person out here.  I stated that ‘They had already come and did you get ‘the report’”?  I have to admit I am not proud of my behavior – he was trying to help but I had been through this for 39 days.  I finally had a ‘brilliant idea’ take a video of the flashing lights on the DTE (Date Terminal Equipment) to prove it was a line problem and not an inside wiring problem.  Sending a video definitely worked.  It turned out that DTE terminology has gone out of ‘vogue’ in the last 15 years.  It is now called a ‘Smart Jack”.

Mike called Verizon who was supposed to be here in 2 two hours.  The fellow from Verizon, Tony, showed up and I was so relieved.  He wasn’t here to fix my problem he was here to install the new card in the Smart Jack and get the circuit up for the bonded T1 line.  Tony was so nice and professional, he called Verizon and got the trouble ticket and immediately found the problem.  It was a bad repeater on the line.  They had to get one of the bucket truck out to fix repeater.  My line was down for 7 hours and 30 minutes that day (the longest stretch) but it was fixed on day 39 (or so I thought).

Day 40 and 41 no problems – I sighed a sigh relief.  Today is Day 42 and this morning the network was down again.  I called support who said ‘That isn’t one of our client numbers”, then asked me to recycle the router — which I do everyday to placate support du jour.  Told the support person it isn’t the router it is the ‘Smart Jack’ — see I can be trained too — and please call Verizon.

So on Day 42 while I am sitting here on hold with Megapath listening to the music  from “O” I decided I would write about my experience.  Note to other customer support organizations, please put calming music on your hold line.  I have over 500 minutes on hold listening to the intense climatic music of “O” and it isn’t the type of music that puts a person in a ‘Zen” state – quite the opposite – it makes one agitated and nervous!

And the saga continues!

RenderX Supports PDF Comments

No comments
RenderX ( released a new version of the XSL-FO engine, XEP, on March 5, 2011. Included in the release was a feature that was on my ‘wish list’ for a while. A nice feature of newer versions of PDF is the ability to add ‘sticky notes’ and pop-up comments in the PDF. Release 4.19 of RenderX supports this feature.

Today I downloaded a trial version of RenderX 4.19 to test and see if it was worth upgrading from 4.12. I was very excited about this feature because I had an immediate need for adding annotations into the PDF document.

The feature isn’t well documented and the documentation is hidden. The only clues on the usage of the feature is in the DTD that is embedded in the XEP Users Guide.

<!ENTITY % comments"pdf-sticky-note | pdf-file-attachment">

<!ELEMENT pdf-comment (%comments;)> <!-- just one particular comment! -->

<!ATTLIST pdf-comment content CDATA #IMPLIED

                      title CDATA #IMPLIED

                      color CDATA #IMPLIED

                      opacity CDATA #IMPLIED>

<!ELEMENT pdf-sticky-note EMPTY>

<!ATTLIST rx:pdf-sticky-note

                icon-type ( comment | key | note | help | newparagraph

                | paragraph | insert ) #IMPLIED

                open ( false | true ) #IMPLIED>

There is one error in the DTD. The attribute ‘title’ is defined as ‘#IMPLIED’ (optional) but in actuality it is #REQUIRED (required). RenderX will reject the XSL-FO without a title attribute.

Creating a commented sticky note is fairly simple:

     <rx:pdf-comment content="{$content}" title="insert">
        <rx:pdf-sticky-note icon-type="insert"/>
The 'icon-type' attribute on the <rx:pdf-sticky-note> tells what icon you want to display visually.  The value of 'insert' displays a rectangle:
Example Insert Icon and Text

Example Insert Icon and Text


If you have a need to support PDF sticky notes in your XSL-FO transformations it is worth looking at the new features of RenderX.

My Favorite XSLT

No comments

Default Template – Copy Nodes

<xsl:template match="node() | @*">
<xsl:copy><xsl:apply-templates select="@* | node()" /></xsl:copy>


Manipulating Dates

One of my ‘goto’ templates converts an Excel-type date ’1/1/2011′ to a normative XML date type ‘ 2011-01-01′.

Below is the template that I use to manipulate the date:

  <xsl:template name="createDate">
<--Call the template with the date as a parameter -->
        <xsl:param name="date"/>

<--Regular Expression (regex) is broken into 3 components, the forward-slash is the separator -->

        <xsl:analyze-string select="$date" regex="(\d+)(/)(\d+)(/)(\d+)">

<--Create 3 variables for 'year', 'month' and 'day' -->
<-- Year is the 5 sequence in the 'regex' expression -->
                <xsl:variable name="year"><xsl:value-of select="regex-group(5)"/></xsl:variable>
                <xsl:variable name="month">

<--Evaluate the month to see if it is a 1 digit or 2 digit month.  If it is 1 digit, add a leading '0'. -->
                        <xsl:when test="string-length(regex-group(1)) = 1">0<xsl:value-of select="regex-group(1)"/></xsl:when>
                        <xsl:otherwise><xsl:value-of select="regex-group(1)"/></xsl:otherwise>

<--Do the same for the 'day' -->
                <xsl:variable name="day">
                        <xsl:when test="string-length(regex-group(3)) = 1">0<xsl:value-of select="regex-group(3)"/></xsl:when>
                        <xsl:otherwise><xsl:value-of select="regex-group(3)"/></xsl:otherwise>

<--Write the XML compliant date as 2011-01-01-->
                <xsl:value-of select="$year"/>-<xsl:value-of select="$month"/>-<xsl:value-of select="$day"/></xsl:matching-substring>

<--If for some reason the date fails, write a date out for validation and place a comment in the file for investigation.>
        <xsl:comment>Date did not convert</xsl:comment>

I just experienced the strangest WordPress problem. I am not sure why I feel like this should be a Bangles song “Just another WordPress Problem, wish it were Sunday”. I am documenting it for posterity for myself, if I experience problem again, or for someone else.

I installed WordPress for use by another person on a virtual domain. I installed the WordPress installation in a directory called ‘wordpress’ the default directory.

I set up the database, username, password, set permissions, etc. in MySql. Started the installation and got the “Error establishing a database connection” message.

I troubleshot this problem for quite a long time without any resolution. Just by chance I renamed the directory ‘wordpress’ to ‘test’ and voila everything worked.

Inquiring minds would like to know but for now I am just happy it works.

Balisage (nee Extreme MarkUp)  is less than a week away.  I love attending Balisage because it is a place where thinking out of the box is the norm!  It is an opportunity to see old friends and meet new friends in a technically non-judgemental environment.

It doesn’t matter whether you are an expert in the field of Markup or a novice – you will learn something.  The atmosphere is much less stuffy than traditional conferences. It is forum where alternative thinking may be debated but won’t get you ostracized from the community.  For example, I have been known to say “namespaces are evil” and a number of us had heated debates on the subject and parted as friends and admired colleagues.  I have also said that “UML is not an optimum data modeling technology” – no debated ensured with this crowd on this statement.

This year a new event has been planned “Conspicuous Consumption Auction”.  This is an auction to help pay the expenses of struggling students to attend the conference.  I have the perfect auction item.  I have the original Unix Magic Poster.  This poster is a classic and I just can’t part with it.  I will find something for the auction.

The conference hotel (Hotel Europa) is eclectic, different and friendly.  It is located in downtown Montreal and is within walking distance of shopping, dining and night life.  The only negative that I can say about the hotel is there isn’t a bar located in the hotel.  This makes congregating after the days sessions difficult.

I would recommend Balisage to anyone interested in a conference dedicated to all facets of XML.  More information about Balisage is available at

Is Blogging For Me?

No comments


This is my first foray into the blogging world.  There are a number of different articles that I think would be interesting to publish.

Initially I thought I might put the articles on the XML Users Group site (  The XML Users Group site uses Drupal as the content server.  I really like Drupal but I am not sure if it is the best solution for blogging.  Then I thought about using Joomla.  I had installed Joomla about year ago and never got around to installing it.  After a lot of procrastination and consternation I settled on WordPress.

I have to admit that I think I might like it better for blogging than Drupal.  Drupal is probably overkill for blogging purposes.  Editing in WordPress seems to be much more intuitive than Drupal.  The HTML widgets make editing in plain text much more intuitive.  I rather like tags but that is just me – normal folks would prefer not to have tags.