1

少し混乱しています。すでに生成して入力したXMLの構造を示すXSDがあり、その情報をPDFで表示する必要があります。

私はCrystalReportsについて考えていましたが、それが最善の解決策であるかどうかはわかりませんが、XSDからCrystal Reportを作成できることを読みましたが、XSDをインスタンス化して入力する必要がありますが、XSDははデータセットではなく、XMLスキーマであるため、どうすればよいかわかりません。ここでかなり迷っています。

これは私が入手したXSDスキームです(政府からの公開ファイルです): http: //www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd

そして、これは私がそれを使って生成したサンプルXMLです:

<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd" version="3.2" fecha="2012-05-22T17:47:38" sello="G3xkr9rKA8ix0ub8XJTNqb0TRR14Sxs4Uj7oDfPj8oCM4HzoMTF7pWcpfx5VCzp9rT+CW6IstoiYLaUNiBtDwCS8oHrYuVawPh+tn+GQpSNi+plafJjcOq8U8wl0nk1hKnqhJWenklCRgxNOFvVeYIMLe0MycUU/2Q7g0mgJOhw=" formaDePago="Pago en una sola exhibicion" noCertificado="30001000000100000800" certificado="MIIE/TCCA+WgAwIBAgIUMzAwMDEwMDAwMDAxMDAwMDA4MDAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMDA3MzAxNjU4NDBaFw0xMjA3MjkxNjU4NDBaMIGWMRIwEAYDVQQDDAlNYXRyaXogU0ExEjAQBgNVBCkMCU1hdHJpeiBTQTESMBAGA1UECgwJTWF0cml6IFNBMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBBQUFBMDEwMTAxQUFBMR4wHAYDVQQFExUgLyBBQUFBMDEwMTAxSERGUlhYMDExETAPBgNVBAsMCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD0ltQNthUNUfzq0t1GpIyapjzOn1W5fGM5G/pQyMluCzP9YlVAgBjGgzwYp9Z0J9gadg3y2ZrYDwvv8b72goyRnhnv3bkjVRKlus6LDc00K7Jl23UYzNGlXn5+i0HxxuWonc2GYKFGsN4rFWKVy3Fnpv8Z2D7dNqsVyT5HapEqwIDAQABo4HqMIHnMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBSYodSwRczzj5H7mcO3+mAyXz+y0DAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcGtpLnNhdC5nb2IubXgvc2F0LmNybDAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNhdC5nb2IubXgvMB8GA1UdIwQYMBaAFOtZfQQimlONnnEaoFiWKfU54KDFMBAGA1UdIAQJMAcwBQYDKgMEMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQArHQEorApwqumSn5EqDOAjbezi8fLco1cYES/PD+LQRM1Vb1g7VLE3hR4S5NNBv0bMwwWAr0WfL9lRRj0PMKLorO8y4TJjRU8MiYXfzSuKYL5Z16kW8zlVHw7CtmjhfjoIMwjQo3prifWxFv7VpfIBstKKShU0qB6KzUUNwg2Ola4t4gg2JJcBmyIAIInHSGoeinR2V1tQ10aRqJdXkGin4WZ75yMbQH4L0NfotqY6bpF2CqIY3aogQyJGhUJji4gYnS2DvHcyoICwgawshjSaX8Y0Xlwnuh6EusqhqlhTgwPNAPrKIXCmOWtqjlDhho/lhkHJMzuTn8AoVapbBUnj" subTotal="105.5678" total="1000" tipoDeComprobante="ingreso" metodoDePago="Efectivo" LugarExpedicion="Madereria Central">
  <cfdi:Emisor rfc="PEPJ8001019Q8" nombre="Mader">
    <cfdi:DomicilioFiscal calle="Calle1" noExterior="12" colonia="Industrial" localidad="Mexico" referencia="aqui" municipio="df" estado="df" pais="mexico" codigoPostal="07300" />
    <cfdi:RegimenFiscal Regimen="Persona Moral" />
  </cfdi:Emisor>
  <cfdi:Receptor rfc="DUK" nombre="Elevadores">
    <cfdi:Domicilio calle="8" noExterior="8" noInterior="0" colonia="9" localidad="9" referencia="9" municipio="9" estado="9" pais="9" codigoPostal="9" />
  </cfdi:Receptor>
  <cfdi:Conceptos>
    <cfdi:Concepto cantidad="1" unidad="metros" noIdentificacion="A1121212" descripcion="Ayacahuitle Primera" valorUnitario="500" importe="500" />
    <cfdi:Concepto cantidad="2" unidad="metros" noIdentificacion="A21128142" descripcion="Ayacahuitle Sec" valorUnitario="600" importe="1200" />
    <cfdi:Concepto cantidad="3" unidad="metros" noIdentificacion="A31281" descripcion="Ayacahuitle Ter" valorUnitario="700" importe="2100" />
  </cfdi:Conceptos>
  <cfdi:Impuestos>
    <cfdi:Retenciones>
      <cfdi:Retencion impuesto="IVA" importe="100" />
    </cfdi:Retenciones>
  </cfdi:Impuestos>
  <cfdi:Complemento>
    <tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/TimbreFiscalDigital/TimbreFiscalDigital.xsd" selloCFD="G3xkr9rKA8ix0ub8XJTNqb0TRR14Sxs4Uj7oDfPj8oCM4HzoMTF7pWcpfx5VCzp9rT+CW6IstoiYLaUNiBtDwCS8oHrYuVawPh+tn+GQpSNi+plafJjcOq8U8wl0nk1hKnqhJWenklCRgxNOFvVeYIMLe0MycUU/2Q7g0mgJOhw=" FechaTimbrado="2012-05-22T17:47:42" UUID="221BA53A-827A-4474-B9F9-3542ECDEB979" noCertificadoSAT="30001000000100000801" version="1.0" selloSAT="ZnKdULidoo95wXOmk1cPM/ZB5Fh8PvsbkRD+zgTA21yIBqjFopt4UGL6sA0DqeWJdzI1Q92lxm6FwrlK+GxFHM7fvKeStE5elEsCW4GyVQG7gvXXxTKiM0xxPzTkxh6OQLeqDMgzodM0my/M8KJx/JiT8JeEVu4wZF1cyc1w13k=" />
  </cfdi:Complemento>
</cfdi:Comprobante>
4

2 に答える 2

2

あなたが探しているテクノロジーはXSL-FOです

于 2012-05-23T02:25:35.390 に答える
2

私はあなたが使用したタグを考慮してあなたの質問に答えようとします...そしていくつかの推測。

C#とCrystalReportsについて説明したので...VisualStudioにはCrystalReportsの無料版が付属しています。それはあなたが必要とすることをします、そしてそれは無料です:出力レイアウトを構築するためのグラフィックデザイナーを持っています。ユーザーがエクスポートまたは印刷する前に結果を確認する必要がある場合に埋め込むことができる無料のビューアが付属し、プログラムで生成する必要がある場合はAPIが付属しています。

XSDとデータセットとの混同は、CrystalReportsがデータを取得する方法を理解していないことに起因している可能性があります。「CrystalReportsプッシュ方式」を検索する場合は、このリンクまたはその他のリンクを試してください。

簡単に言うと、pushメソッドを使用すると、Visual Studioの設計時に、Crystal Reportのデータソースとしてデータセットを使用して、レポートのコンテンツをソースおよびフォーマットするためにドラッグアンドドロップできます。実行時に、データセットにレポートデータを入力し、それをレポートのデータソースとして設定します。XMLからデータセットにデータを入力できるので、これで解決策が得られます。

Visual Studioが「データセット」XSDとして認識するXSDに投稿したXSDを変換するには、これを試して、生成された出力を調べて、2つの違いを理解します。

XmlReaderSettings settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
using (XmlReader reader = XmlReader.Create(@"D:\temp 1\sitio_internet\cfd\3\cfdv32.xsd", settings))
{
    DataSet dataSet = new DataSet();            
    dataSet.ReadXmlSchema(reader);  
    dataSet.WriteXmlSchema(@"D:\temp 1\sitio_internet\cfd\3\cfdv32-DS.xsd");
}

学習ツールとして、両方のXSDをVisualStudioプロジェクトに追加します。XSDごとに、右クリックしてViewDesignerコマンドを呼び出します。1つはXSDエディターです。もう1つは、データセット図です。

これにより、XSDからデータセットへの処理が行われます。

@paquetpが教えてくれなかったことは、.NETでXSL-FOの優れた安価なサポートを(本当に)幸運に受けたとしても(C#について言及したので)、まだ何かが必要だということです。スタイルシートを簡単に編集します。ほとんどの人はこれにWYSIWYGエディターを好みますが、これは安価に見つけるのが難しいもう1つのことです。

したがって、投稿したXSDからDataSetを作成できるXSDを考えると、CrystalReportsを使用したアプローチはいくつかの優れたユーザーフレンドリーな機能で機能する可能性があると思います。

于 2012-05-25T04:15:35.697 に答える