title: How to assign xml string attribute to a variable in xslt
body: <p>I was trying to see if the input objectType, value0 exists in the Types/Type and check the condition to use the sibling attribute name value of the Types/Type in the output xml.
  Here is the input xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;outPut&gt;
    &lt;object&gt;
      &lt;objectType&gt;TestOne&lt;/objectType&gt;
      &lt;Attributes&gt;
        &lt;attribute name="value0"&gt;codeOne&lt;/attribute&gt;
        &lt;attribute name="value1"&gt;35&lt;/attribute&gt;
        &lt;attribute name="value2"&gt;35&lt;/attribute&gt;
      &lt;/Attributes&gt;
      &lt;objectType&gt;TestTwo&lt;/objectType&gt;
      &lt;Attributes&gt;
        &lt;attribute name="value0"&gt;codeTwo&lt;/attribute&gt;
        &lt;attribute name="value1"&gt;25&lt;/attribute&gt;
        &lt;attribute name="value2"&gt;35&lt;/attribute&gt;
      &lt;/Attributes&gt;
      &lt;objectType&gt;TestThree&lt;/objectType&gt;
      &lt;Attributes&gt;
        &lt;attribute name="value0"&gt;codeThree&lt;/attribute&gt;
        &lt;attribute name="value1"&gt;25&lt;/attribute&gt;
        &lt;attribute name="value2"&gt;3225&lt;/attribute&gt;
        &lt;attribute name="value3"&gt;225&lt;/attribute&gt;
      &lt;/Attributes&gt;
      &lt;objectType&gt;TestFour&lt;/objectType&gt;
      &lt;Attributes&gt;
        &lt;attribute name="value0"&gt;codeFour&lt;/attribute&gt;
        &lt;attribute name="value1"&gt;25&lt;/attribute&gt;
        &lt;attribute name="value2"&gt;35&lt;/attribute&gt;
      &lt;/Attributes&gt;
      &lt;objectType&gt;TestFive&lt;/objectType&gt;
      &lt;Attributes&gt;
        &lt;attribute name="value0"&gt;codeFive&lt;/attribute&gt;
        &lt;attribute name="value1"&gt;2&lt;/attribute&gt;
        &lt;attribute name="value2"&gt;3225&lt;/attribute&gt;
        &lt;attribute name="value3"&gt;225&lt;/attribute&gt;
      &lt;/Attributes&gt;
      &lt;objectType&gt;TestSix&lt;/objectType&gt;
      &lt;Attributes&gt;
        &lt;attribute name="value0"&gt;codSix&lt;/attribute&gt;
        &lt;attribute name="value1"&gt;2&lt;/attribute&gt;
        &lt;attribute name="value2"&gt;3225&lt;/attribute&gt;
        &lt;attribute name="value3"&gt;225&lt;/attribute&gt;
      &lt;/Attributes&gt;
    &lt;/object&gt;
    &lt;Types&gt;
      &lt;Type&gt;
        &lt;temp&gt;TestOne&lt;/temp&gt;
        &lt;ID&gt;2847&lt;/ID&gt;
        &lt;Is_Ingest&gt;0&lt;/Is_Ingest&gt;
        &lt;Category&gt;NAV&lt;/Category&gt;
        &lt;CategoryTwo&gt;NAVAid&lt;/CategoryTwo&gt;
        &lt;Class&gt;codeOne&lt;/Class&gt;
        &lt;New_Attribute&gt;nisting&lt;/New_Attribute&gt;
        &lt;New_Value&gt;52&lt;/New_Value&gt;
        &lt;Condition&gt;value1=35&lt;/Condition&gt;
      &lt;/Type&gt;
      &lt;Type&gt;
        &lt;temp&gt;TestTwo&lt;/temp&gt;
        &lt;ID&gt;2847&lt;/ID&gt;
        &lt;Is_Ingest&gt;0&lt;/Is_Ingest&gt;
        &lt;Category&gt;NAV&lt;/Category&gt;
        &lt;CategoryTwo&gt;NAVAid&lt;/CategoryTwo&gt;
        &lt;Class&gt;codeTwo&lt;/Class&gt;
        &lt;New_Attribute&gt;nisting&lt;/New_Attribute&gt;
        &lt;New_Value&gt;53&lt;/New_Value&gt;
        &lt;Condition&gt;value1!=33&lt;/Condition&gt;
      &lt;/Type&gt;
      &lt;Types&gt;
        &lt;Type&gt;
          &lt;temp&gt;TestThree&lt;/temp&gt;
          &lt;ID&gt;28247&lt;/ID&gt;
          &lt;Is_Ingest&gt;0&lt;/Is_Ingest&gt;
          &lt;Category&gt;NAV&lt;/Category&gt;
          &lt;CategoryTwo&gt;NAVAid&lt;/CategoryTwo&gt;
          &lt;Class&gt;codeThree&lt;/Class&gt;
          &lt;New_Attribute&gt;nisting&lt;/New_Attribute&gt;
          &lt;New_Value&gt;52&lt;/New_Value&gt;
          &lt;Condition&gt;value1=35&lt;/Condition&gt;
        &lt;/Type&gt;
        &lt;Type&gt;
          &lt;temp&gt;TestFour&lt;/temp&gt;
          &lt;ID&gt;2847&lt;/ID&gt;
          &lt;Is_Ingest&gt;0&lt;/Is_Ingest&gt;
          &lt;Category&gt;NAV&lt;/Category&gt;
          &lt;CategoryTwo&gt;NAVAid&lt;/CategoryTwo&gt;
          &lt;Class&gt;codeFour&lt;/Class&gt;
          &lt;New_Attribute&gt;AidM&lt;/New_Attribute&gt;
          &lt;New_Value&gt;45&lt;/New_Value&gt;
          &lt;Condition&gt;value1!=33 &amp; value1!=28&lt;/Condition&gt;
        &lt;/Type&gt;
        &lt;Type&gt;
          &lt;temp&gt;TestFive&lt;/temp&gt;
          &lt;ID&gt;2847&lt;/ID&gt;
          &lt;Is_Ingest&gt;0&lt;/Is_Ingest&gt;
          &lt;Category&gt;NAV&lt;/Category&gt;
          &lt;CategoryTwo&gt;Aid&lt;/CategoryTwo&gt;
          &lt;Class&gt;codeFive&lt;/Class&gt;
          &lt;New_Attribute&gt;AidM&lt;/New_Attribute&gt;
          &lt;New_Value&gt;4&lt;/New_Value&gt;
          &lt;Condition&gt;!value&lt;/Condition&gt;
        &lt;/Type&gt;
        &lt;Type&gt;
          &lt;temp&gt;TestSix&lt;/temp&gt;
          &lt;ID&gt;2847&lt;/ID&gt;
          &lt;Is_Ingest&gt;0&lt;/Is_Ingest&gt;
          &lt;Category&gt;NAV&lt;/Category&gt;
          &lt;CategoryTwo&gt;Aid&lt;/CategoryTwo&gt;
          &lt;Class&gt;codeSix&lt;/Class&gt;
          &lt;New_Attribute&gt;AidM&lt;/New_Attribute&gt;
          &lt;New_Value&gt;4&lt;/New_Value&gt;
        &lt;/Type&gt;
      &lt;/Types&gt;
    &lt;/outPut&gt;
  </code></pre>
  
  <p>Here is the xsl</p>
  
  <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
      &lt;xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/&gt;
      &lt;xsl:strip-space elements="*"/&gt;
      &lt;xsl:template match="/Input"&gt;
          &lt;objects&gt;
              &lt;xsl:for-each select="Output"&gt;
                  &lt;object type="{object/objectType}"&gt;
                      &lt;xsl:variable name="attributes" select="Attributes/*"/&gt;
                      &lt;xsl:variable name="matching-template" select="/Output/Types/Type[temp=$attributes and class=$attributes]"/&gt;
                      &lt;template&gt;
                          &lt;xsl:value-of select="$matching-template/New_Attribute"/&gt;
                          &lt;xsl:value-of select="$matching-template/New_Value"/&gt;
                      &lt;/template&gt;
                  &lt;/object&gt;
              &lt;/xsl:for-each&gt;
          &lt;/objects&gt;
      &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>the expected output</p>
  
  <pre><code>&lt;output&gt;
      &lt;object&gt;
          &lt;objectType&gt;TestOne&lt;/objectType&gt;
          &lt;Attributes&gt;
              &lt;attribute name="value0"&gt;codeOne&lt;/attribute&gt;
              &lt;attribute name="value1"&gt;25&lt;/attribute&gt;
              &lt;attribute name="value2"&gt;35&lt;/attribute&gt;
              &lt;attribute name="nisting"&gt;52&lt;/attribute&gt;
          &lt;/Attributes&gt;
          &lt;objectType&gt;TestTwo&lt;/objectType&gt;
          &lt;Attributes&gt;
              &lt;attribute name="value0"&gt;codeTwo&lt;/attribute&gt;
              &lt;attribute name="value1"&gt;25&lt;/attribute&gt;
              &lt;attribute name="value2"&gt;35&lt;/attribute&gt;
              &lt;attribute name="NAV"&gt;NAVAID&lt;/attribute&gt;
              &lt;attribute name="value2"&gt;35&lt;/attribute&gt;
          &lt;/Attributes&gt;
      &lt;/object&gt;
  &lt;/output&gt;
  </code></pre>