OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-comment] Visit card as QR Code


Thank you Bob : I'll follow your advice.

For information, in order to generate QR Codes, I've written a basic stylesheet to convert some person-related information into a vCard.

If someone is interested, it's there....
Regards,
Florimond
Le mercredi 15 mai 2019 Ã 18:24:28 UTC+2, Bob Stayton <bobs@sagehill.net> a Ãcrit :


It looks like either of these would work in DocBook 5.1:

person/address/inlinemediaobject

or

person/personname/inlinemediaobject

Bob Stayton
Sagehill Enterprises
bobs@sagehill.net
On 5/14/2019 10:54 PM, Alemps Florimond wrote:
Hello,

Has anyone integrated a QR code as a media object in the element <person> ?

Regards,
Florimond
<?xml version='1.0' encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:xlink='http://www.w3.org/1999/xlink'
                xmlns:db="http://docbook.org/ns/docbook";
                xmlns="http://docbook.org/ns/docbook";
                exclude-result-prefixes="db  xlink"
                version='1.0'>

<xsl:output method="text" />

<!-- 
  Written by ntuflorimond@yahoo.com
  Purpose : turn personal information into vCard format
  https://tools.ietf.org/html/rfc6350
-->
<xsl:template match="db:person|db:author|db:editor" mode="vcard">
  <xsl:call-template name="person.vcard" />
</xsl:template>

<xsl:template name="person.vcard">
  <xsl:text>BEGIN:VCARD</xsl:text>
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
  <xsl:text>VERSION:4.0</xsl:text>
  <xsl:text>&#10;</xsl:text> <!-- newline character -->

  <xsl:text>FN:</xsl:text>
  <xsl:value-of select=".//db:honorific" />
  <xsl:text> </xsl:text>
  <xsl:value-of select=".//db:firstname" />
  <xsl:text> </xsl:text>
  <xsl:value-of select=".//db:surname" />
  <xsl:text> </xsl:text>
  <xsl:value-of select=".//db:lineage" />
  <xsl:text>&#10;</xsl:text> <!-- newline character -->

  <xsl:apply-templates mode="vcard" />

  <xsl:text>END:VCARD</xsl:text>
</xsl:template>

<!-- ==================================================================== -->

<xsl:template match="db:personname" mode="vcard" >
  <xsl:text>N:</xsl:text>
  <xsl:apply-templates select="db:firstname|db:surname|db:othername|db:honorific|db:givenname|db:lineage" mode="vcard" />
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
</xsl:template>

<xsl:template match="db:firstname|db:surname|db:othername|db:honorific|db:givenname|db:lineage" mode="vcard">
  <xsl:value-of select="." />
  <xsl:if test="not( position() = last())">
    <xsl:text>;</xsl:text>
  </xsl:if>
</xsl:template>

<xsl:template match="db:othername" mode="vcard">
  <xsl:text>NICKNAME:</xsl:text>
  <xsl:value-of select="." />
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
</xsl:template>

<xsl:template match="db:imagedata" mode="vcard">
<!-- To be implemented : easy if base64 encoded ( I guess) -->
<!--
  <xsl:text>PHOTO:</xsl:text>
 -->
</xsl:template>

<xsl:template match="db:date" mode="vcard">
  <xsl:text>BDAY:</xsl:text>
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
</xsl:template>

<xsl:template match="db:address" mode="vcard">
  <xsl:apply-templates select="db:street|db:otheraddr|db:pob|db:postcode|db:city|db:state|db:country" mode="vcard"/>
  <xsl:apply-templates select="*[not(self::db:street)][not(self::db:otheraddr)][not(self::db:pob)][not(self::db:postcode)][not(self::db:city)][not(self::db:state)][not(self::db:country)]" mode="vcard"/>
</xsl:template>

<xsl:template match="db:street|db:otheraddr|db:pob|db:postcode|db:city|db:state|db:country" mode="vcard">
  <xsl:if test="1 = position()">
    <xsl:text>ADR:</xsl:text>
  </xsl:if>
  <xsl:value-of select="string(.)" />
  <xsl:choose>
    <xsl:when test="not( position() = last())">
      <xsl:text>;</xsl:text>
    </xsl:when>
    <xsl:otherwise>
      <xsl:text>&#10;</xsl:text> <!-- newline character -->
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>LABEL:</xsl:text>
</xsl:template>
-->

<xsl:template match="db:phone" mode="vcard">
  <xsl:variable name="spec">
    <xsl:if test="@remap">
      <xsl:value-of select="concat(';TYPE=&quot;',@remap,'&quot;')" />
     </xsl:if>
  </xsl:variable>
  <xsl:value-of select="concat('TEL',$spec,':',string(.))" />
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
</xsl:template>

<xsl:template match="db:email" mode="vcard">
  <xsl:text>EMAIL:</xsl:text>
  <xsl:value-of select="string(.)" />
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
</xsl:template>

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>MAILER:</xsl:text>
</xsl:template>
-->

<!-- Time zone
<xsl:template match="db:" mode="vcard">
  <xsl:text>TZ:</xsl:text>
</xsl:template>
-->

<!-- GPS
<xsl:template match="db:" mode="vcard">
  <xsl:text>GEO:</xsl:text>
</xsl:template>
-->

<xsl:template match="db:jobtitle" mode="vcard">
  <xsl:text>TITLE:</xsl:text>
</xsl:template>

<!-- Function
<xsl:template match="db:" mode="vcard">
  <xsl:text>ROLE:</xsl:text>
</xsl:template>
-->

<xsl:template match="db:imagedata" mode="vcard">
<!-- To be implemented : easy if base64 encoded ( I guess) -->
<!--
  <xsl:text>LOGO:</xsl:text>
-->
</xsl:template>

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>AGENT:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>ORG:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>CATEGORIES:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:personblurb" mode="vcard">
  <xsl:text>NOTE:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>REV:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>SORT-STRING:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>SOUND:</xsl:text>
</xsl:template>
-->

<xsl:template match="db:uri" mode="vcard">
  <xsl:text>URL:</xsl:text>
  <xsl:value-of select="string(.)" />
  <xsl:text>&#10;</xsl:text> <!-- newline character -->
</xsl:template>

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>URL:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>UID:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>VERSION:</xsl:text>
</xsl:template>
-->

<!--
<xsl:template match="db:" mode="vcard">
  <xsl:text>KEY:</xsl:text>
</xsl:template>
-->

</xsl:stylesheet>



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]