The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Describing complex ds:SignedInfo
#     {http://www.w3.org/2000/09/xmldsig#}SignedInfo
#
# Produced by XML::Compile::Translate::Template version undef
#          on Fri Oct 11 15:53:31 2013
#
# BE WARNED: in most cases, the example below cannot be used without
# interpretation.  The comments will guide you.
#
# xmlns:ds        http://www.w3.org/2000/09/xmldsig#

# is a ds:SignedInfoType
{ # sequence of ds_CanonicalizationMethod, ds_SignatureMethod,
  #   ds_Reference

  # is a ds:CanonicalizationMethodType
  ds_CanonicalizationMethod =>
  { # sequence of ANY

    # any element in any namespace
    # occurs any number of times
    ANY => [ "Anything", ],

    # is a xsd:anyURI
    # attribute Algorithm is required
    Algorithm => "http://example.com", },

  # is a ds:SignatureMethodType
  ds_SignatureMethod =>
  { # sequence of ds_HMACOutputLength, ANY

    # is a xsd:integer
    # is optional
    ds_HMACOutputLength => 42,

    # any element not in ds:
    # occurs any number of times
    ANY => [ "Anything", ],

    # is a xsd:anyURI
    # attribute Algorithm is required
    Algorithm => "http://example.com", },

  # is a ds:ReferenceType
  # occurs 1 <= # <= unbounded times
  ds_Reference =>
  [ { # sequence of ds_Transforms, ds_DigestMethod, ds_DigestValue

      # is a ds:TransformsType
      # is optional
      ds_Transforms =>
      { # sequence of ds_Transform

        # is a ds:TransformType
        # occurs 1 <= # <= unbounded times
        ds_Transform =>
        [ { # choice of ANY, ds_XPath
            # occurs any number of times
            cho_any => 
            [ {
                # any element not in ds:
                ANY => "Anything",

                # is a xsd:string
                ds_XPath => "example", },
            ],

            # is a xsd:anyURI
            # attribute Algorithm is required
            Algorithm => "http://example.com", }, ], },

      # is a ds:DigestMethodType
      ds_DigestMethod =>
      { # sequence of ANY

        # any element not in ds:
        # occurs any number of times
        ANY => [ "Anything", ],

        # is a xsd:anyURI
        # attribute Algorithm is required
        Algorithm => "http://example.com", },

      # is a xsd:base64Binary
      ds_DigestValue => "decoded bytes",

      # is a xsd:ID
      Id => "id_0",

      # is a xsd:anyURI
      URI => "http://example.com",

      # is a xsd:anyURI
      Type => "http://example.com", }, ],

  # is a xsd:ID
  Id => "id_0", }