Как я могу зациклить и сгенерировать ключи для карт с XSLT 3.0? - PullRequest
0 голосов
/ 05 января 2019

Я пытался построить новую карту. В моем источнике XML у меня есть много продуктов (данные продукта и идентификаторы). Как я могу создать так много ключей, как продукты?

Целью является преобразование XML в XML с помощью XSLT. Идея состояла в том, чтобы создать карту и на следующем шаге вызвать ключи для указания специфических данных продукта, которые мне нужны. Поэтому мне нужно знать, возможно ли это с использованием карт или есть другое решение?

Пример исходного XML

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <row>
        <id>102</id>
        <product>Lenovo 1234</product>
        <productfamily>laptop</productfamily>
    </row>
    <row>
    .....

1008 * XSLT *

<xsl:variable name="val" as="map(xs:integer, xs:integer)">
  <xsl:map>
    <xsl:for-each select="//id"> 
      <xsl:map-entry key="" select="."/>
  </xsl:map>
</xsl:variable>    

<xsl:template match="/">
  <xsl:value-of select="map:get($val , 102)"/>    
</xsl:template>

1 Ответ

0 голосов
/ 05 января 2019

Чтобы создать карту на основе простых функциональных отношений в данных, которые вы можете сделать

<xsl:variable name="index" as="map(*)">
  <xsl:map>
    <xsl:for-each select="//x">
      <xsl:map-entry key=".//@id" select="."/>
    </xsl:for-each>
  </xsl:map>
</xsl:variable>

или, если вы предпочитаете,

<xsl:variable name="index" as="map(*)"
  select="map:merge(//x ! map:entry(.//@id, .))"/>
...