<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="333158" data-post-id="333158">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="linusdm" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/linusdm/120/30659_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  linusdm
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I had some time to experiment with soapex and its building blocks (detergent and erlsom). As mentioned above, I have some problems for my specific case:</p>
<ul>
<li>Identical element names, but in different namespaces, collide when defining records for them (I’m quite confident this can be fixed somehow).</li>
<li>I found out that some of the SOAP clients I’ll serve don’t respect the sequence order of input parameters (elements in <code>&lt;xs:sequence&gt;</code> groups define an explicit order, while the <code>&lt;xs:all&gt;</code> grouping allows any order of elements) . Existing (Java based, JAX-RS) implementations of the service seem to be able to cope with these naughty clients, so I’ll have to find a way to deal with that too (I have little control over the clients and how well-behaving they are). Erlsom is strict about it, so this would be an additional hurdle.</li>
</ul>
<p>So, I’m back at the drawing board, thinking about how to parse a SOAP message manually, but without being strict. It seems to me that Erlsom, the underlying xml parser of soapex and detergent, is very schema-driven. I’ve learned a bit about Records. It seems quite heavy for my relatively simple situation. The SOAP operations and their inputs and outputs are not very complicated. So I’d suspect that other parsing methods, not relying on a compile-time schema and corresponding Record definitions, would work as well. Maybe with the added benefit that I can be less strict about some aspects (like ordering, as mentioned before).</p>
<p><strong>One thing that still complicates things is namespaces.</strong> Clients can alias these namespaces however they like. The only xml parsing library I know that supports namespaces is <a href="https://hexdocs.pm/sweet_xml/readme.html" rel="noopener nofollow ugc">sweet_xml</a>. XPath expressions can then be written in a way that is decoupled from which aliases are chosen. Are there other options? I’ve learned that <a href="https://github.com/qcam/saxy/issues/112" rel="noopener nofollow ugc">saxy does <em>not</em> support namespaces</a> natively.</p>
<p>Who would’ve thought that I’d be digging into XML parsing strategies in year and age… <img src="https://forum.elixirforum.com/images/emoji/apple/man_shrugging.png?v=15" title=":man_shrugging:" class="emoji" alt=":man_shrugging:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333158" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/building-a-soap-endpoint-in-phoenix/64474/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-333158" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333158"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="333165" data-post-id="333165">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>But do you really need the namespaces? Are they important in how do you respond to the clients?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333165" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/building-a-soap-endpoint-in-phoenix/64474/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-333165" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333165"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="333166" data-post-id="333166">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="linusdm" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/linusdm/120/30659_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  linusdm
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The requests come in with the namespace. So I have to parse it somehow. No dodging that requirement.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="333166" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/building-a-soap-endpoint-in-phoenix/64474/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-333166" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333166"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>