0

私は基本的にそこにあるテーブルと行の要素だけを頼りにする超汎用XSLTを作成しようとしています。XSLT を作成しようとしている次のサンプル XML があります。

<?xml version="1.0" encoding="UTF-8"?>
<table>
    <row>
        <id>5311</id>
        <status>Active</status>
        <id_vendor>Verizon</id_vendor>
        <mobile_number>555123456</mobile_number>
    </row>
    <row>
        <id>5312</id>
        <status>Inactive</status>
        <id_vendor>Sprint</id_vendor>
        <mobile_number>555123457</mobile_number>
    </row>
    <row>
        <id>5313</id>
        <status>Active</status>
        <id_vendor>ATT</id_vendor>
        <mobile_number>555123458</mobile_number>
    </row>
</table>

問題は、フィールドが最終的にどうなるかわからないことです (id、status、id_vendor、mobile_number などはすべて変更される可能性があります。

次のようなビューを快適に見たいと思います。

<div style="background-color:#E3CA87;padding:.2em">
    <div style="background-color:#F1E2BB;padding:.2em">
        <div>id: x<div>
        <div>status: active<div>
        <div>id_vendor: Verizon<div>
        <div>mobile_number: 555123456<div>
    <div>
<div>

これが私がこれまでに持っているものです..しかし、匿名要素を正しく処理できません:

<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <body style="background-color:#eee;font-size:12pt;font-family:Arial;">
    <xsl:for-each select="table/row">
      <div style="background-color:#eee;padding:.5em">

       <xsl:for-each select="/*">

       <div style="background-color:#E3CA87;padding:.2em;border: 1px solid black">
        <xsl:for-each select="./*">
          <div style="background-color:#F1E2BB;padding:.2em">
<xsl:value-of select ="name(./*)"/>: 
<xsl:value-of select="*" />
          </div>
        </xsl:for-each>
      </div>
    </xsl:for-each>
      </div>
    </xsl:for-each>
  </body>
</html>
4

2 に答える 2

0

<xsl:for-each select="*">の代わりに相対パスを使用します<xsl:for-each select="/*">。次に、内側の for-each を削除して、単純に置き換えたいと思います

<div style="background-color:#F1E2BB;padding:.2em">
           <xsl:value-of select="concat(local-name(), ': ', .)" />
          </div>
于 2013-09-12T17:49:07.467 に答える