【问题标题】:Add XSLT validation on XSLT File Upload在 XSLT 文件上传时添加 XSLT 验证
【发布时间】:2017-09-02 21:00:23
【问题描述】:

我有一个带有 Paperclip 文件上传功能的 Rails 应用程序,用于上传 XSLT 文件。我正在寻找在上传之前验证 XSLT 文件的方法。我实际上可以使用回形针验证 content_type

  validates_attachment_content_type :xslt, content_type: "application/xslt+xml", message: 'Invalid Content Type. Please upload a valid XSLT file'

有没有办法在保存之前完全验证 XSLT 文件的语法?

【问题讨论】:

  • 取决于您要验证的内容。 XSD 或 DTD 通常用于验证基于 XML 的文件(XSLT 是基于 XML 的文件)
  • OTOH,xslt 可以包含任意 xml sn-ps,因此特定的验证可能很困难。您必须了解更多关于您认为“有效”的信息,而不是问题中指定的信息。如果输出方法必须是文本,可能会更容易。
  • 输出将是 HTML

标签: ruby-on-rails xml validation xslt


【解决方案1】:

是的,您可以使用 Oxygen Editor 来验证它,或者您可以编写 .net 工具来使用 Saxon dll 来验证它。

【讨论】:

    【解决方案2】:

    假设您有 xslt 文件,您可以使用 Nokogiri gem 并按以下方式进行操作:

    validate :xslt_validation
    
    def xslt_validation(xml_message)
      xml = Nokogiri::XML(xml_message)
      template = Nokogiri::XSLT(File.open(Rails.root.join('path from root to xslt')))
      validation = template.transform(xml)
      result = Hash.from_xml(validation.to_s)['Name of the error report']
    
      errors.add(:xslt_field, "XSLT errors: #{result['Errors']}") if result['Errors'].present?
    end
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2011-06-05
      相关资源
      最近更新 更多