Преобразование географических координат из градуса-часа-минуты в десятичную в XSL - PullRequest
1 голос
/ 23 декабря 2011

У меня есть файл XML, где одним из элементов является гео-координата (широта / долгота). Это поле имеет формат градус-час-минуты (например, 43: 06: 35.4779), и мне нужно преобразовать его в десятичный формат. Может ли кто-нибудь помочь сделать это преобразование в XSL или указать на некоторые материалы. Заранее спасибо!

Изменения: Может ли кто-нибудь помочь мне обрезать значение lat / long, которое я получаю после преобразования. например,

<latitude>43.051643999999996</latitude>
<longitude>-112.62663475000001</longitude>

1 Ответ

1 голос
/ 23 декабря 2011

Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

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

 <xsl:template match="lat/text() | long/text()">
  <xsl:call-template name="DegreesToDecimal"/>
 </xsl:template>

 <xsl:template name="DegreesToDecimal">
  <xsl:param name="pDegrees" select="."/>

  <xsl:variable name="vDegrees" select=
   "number(substring-before($pDegrees, ':'))"/>

  <xsl:variable name="vMinutes" select=
   "number(
       substring-before(
           substring-after($pDegrees, ':'),
           ':'
                       )
           )"/>

  <xsl:variable name="vSeconds" select=
   "number(
       substring-after(
           substring-after($pDegrees, ':'),
           ':'
                       )
           )"/>

  <xsl:value-of select=
   "$vDegrees
  +
    $vMinutes div 60
  +
    $vSeconds div 3600
  "/>
 </xsl:template>
</xsl:stylesheet>

при применении к этому документу XML :

<coordinates>
 <lat>43:06:35.4779</lat>
 <long>53:22:16.7890</long>
</coordinates>

производит искправильный результат :

<coordinates>
   <lat>43.10985497222222</lat>
   <long>53.37133027777778</long>
</coordinates>

Пояснение : Правильное использование функций substring-before(), substring-after() и number().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...