• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 456
  • Last Modified:

Adding text pt; at the end of line-height

Hello Experts,

The input xml file contains below structure like...

<p outputclass="line-height: 1.5;text-align: right;"><ph outputclass="color: green;font-size: 9pt;"></ph><xref href="test.html#survey">test</xref><ph outputclass="font-size: 9pt;"><b></b></ph></p>
      <p>

xslt code for this....
<xsl:template match="p[not(parent::entry)][@outputclass]">
    <xsl:variable name="value" select="@outputclass"/>
    <xsl:variable name="margin" select="substring-before(substring-after($value,'margin-left:'),'in;')"/>
    <p>
      <xsl:copy-of select="@*[not(name() = 'class')][not(name() = 'outputclass')]"/>
      <xsl:attribute name="style">
        <xsl:choose>
          <xsl:when test="contains($value,'margin-left:')">
            <xsl:value-of select="number($margin)*96"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$value"/>  
          </xsl:otherwise>
        </xsl:choose>
      </xsl:attribute>
      <xsl:apply-templates/>
    </p>
  </xsl:template>

In the output which is like below...
<p style="line-height: 1.5;text-align: right;"> for this line i have to add line-height:1.5pt;
         <span style="color: green;font-size: 9pt;"></span>
         <a href="test.html#survey">Test</a>
         <span style="font-size: 9pt;">
            <b></b>
         </span>
      </p>

Can you please suggest what's needs to be updated in xslt code.
0
ShaileshShinde
Asked:
ShaileshShinde
1 Solution
 
Geert BormansInformation ArchitectCommented:
Here is what you need to do this.
I am not convinced of the usefullness though
Note that 1.5 lineheight means that it is 1.5 times the font-size, often around 12pt, so line-height would be 18pt
a line-height of 1.5pt is very small
But anyway, I did what you asked for
    <xsl:template match="p[not(parent::entry)][@outputclass]">
        <xsl:variable name="value" select="@outputclass"/>
        <xsl:variable name="changed-value">
            <xsl:analyze-string select="$value" regex="^(.*)(line\-height:\s*[\d\.]+)(pt)?(.*)$">
                <xsl:matching-substring>
                    <xsl:value-of select="regex-group(1)"></xsl:value-of>
                    <xsl:value-of select="regex-group(2)"></xsl:value-of>
                    <xsl:text>pt</xsl:text>
                    <xsl:value-of select="regex-group(4)"></xsl:value-of>
                </xsl:matching-substring>
                <xsl:non-matching-substring>
                    <xsl:value-of select="."></xsl:value-of>
                </xsl:non-matching-substring>
            </xsl:analyze-string>
        </xsl:variable>
        <xsl:variable name="margin" select="substring-before(substring-after($changed-value,'margin-left:'),'in;')"/>
        <p>
            <xsl:copy-of select="@*[not(name() = 'class')][not(name() = 'outputclass')]"/>
            <xsl:attribute name="style">
                <xsl:choose>
                    <xsl:when test="contains($changed-value,'margin-left:')">
                        <xsl:value-of select="number($margin)*96"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:value-of select="$changed-value"/>  
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:attribute>
            <xsl:apply-templates/>
        </p>
    </xsl:template>

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now