1

このリンクに移動XMLファイルを属性XMLに変換し
、質問のxmlファイル(名前は「xml_simple.xml」)
をコピー/貼り付けし、回答xsltをコピー/貼り付けてから(名前は「xslt4convert.xsl」)
、このphpファイルをコピー/ 貼り付けします
phpコード:-

<?php
    $sourcedoc = new DOMDocument();
    $sourcedoc->load('xml_simple.xml');
    $stylesheet = new DOMDocument();
    $stylesheet->load('xslt4convert.xsl');

    // create a new XSLT processor and load the stylesheet
    $xsltprocessor = new XSLTProcessor();
    $xsltprocessor->importStylesheet($stylesheet);

    // save the new xml file
    file_put_contents('xml_converted.xml', $xsltprocessor->transformToXML($sourcedoc));

echo ' xml convert';
?>

このphpファイルを実行し、新しいxmlファイルを生成します
このファイルを
&#10;すべての属性値で メモ帳に開き
、ブラウザに1つのスペースを表示&#10;
しますこれを削除する方法は、xmlファイルをメモ帳で開いた場合にメモ帳に表示されます
...

4

1 に答える 1

1

このスタイルシートはそれを行う必要があります:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:output method="xml" indent="yes"/>

  <!--
  Identity transform: copy all nodes that don't have overriding templates as is
  -->
  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="@value">
    <xsl:attribute name="value">
      <!--
      Use the translate() function to replace all &#10; entities with an empty
      string
      -->
      <xsl:value-of select="translate(., '&#10;', '')"/>
    </xsl:attribute>
  </xsl:template>
</xsl:stylesheet>

出力

<?xml version="1.0"?>
<products>
  <product_id value="1">
    <tab_id value="351">
      <tab_name value="test1"/>
      <region_timezone value="1"/>
      <dist_region value="5069,5069,5069"/>
      <dist_value value="55,342,86"/>
      <reg_str_dt value="2013-01-14 20:35:00"/>
    </tab_id>
  </product_id>
  <product_id value="2">
    <tab_id value="352">
      <tab_name value="test2"/>
      <region_timezone value="1"/>
      <dist_region value="4457,7140,5069"/>
      <dist_value value="55,213,86"/>
      <reg_end_dt value="2013-02-14 20:39:00"/>
    </tab_id>
  </product_id>
</products>
于 2013-03-08T06:30:27.477 に答える