2011-03-28 3 views
0

csharp 및 xslt를 사용하여 중첩 된 레코드를 업데이트하려고합니다.xsl 변수를 사용하여 업데이트해야하는 레코드의 하위 ID를 얻는 방법은 무엇입니까?

  else if (Request.Form["SaveExistingAnalysis"] != null) 
     { 
      cbancWS.TopicAnalysis tan = new cbancWS.TopicAnalysis(); 
      int topicID = Convert.ToInt32(Request.Form["TopicID"]); 
      if (tan.TopicAnswers == null) 
      { 
       tan.TopicAnswers = new string[15]; 
      } 
      for (int i = 0; i < Request.Form.Count; i++) 
      { 
       string x = Request.Form.Keys[i].ToString(); 
       if (!string.IsNullOrEmpty(x)) 
       { 
        if (x.Contains("txtA")) 
        { 
         tan.TopicAnalysisText = Request.Form[x]; 
         tan.TopicAnalysisTextPending = Request.Form[x]; 
         tan.StatusID = 1; 
         tan.TopicID = topicID; 
         tan.AdminUserID = Convert.ToInt32(Request.Form["AdminUserID"]); 
         tan.TopicAnalysisID = Convert.ToInt32(Request.Form["hiTopicAnalysisID"]); 
        } 
        else if (x.Contains("txtQ")) 
        { 
         tan.TopicAnalysisText = Request.Form[x]; 
         tan.DateAdded = DateTime.Now; 
         tan.StatusID = 1; 
         tan.TopicID = topicID; 

         TopicAnswer ta = new TopicAnswer(); 
         int qID = GetQuestionNumber(x); 
         //{TopicAnswerID} 
         //int aID = 
         ta.TopicAnswerID = Convert.ToInt32(Request.Form["hiTopicAnswerID"]); 
         ta.AdminUserID = Convert.ToInt32(Request.Form["AdminUserID"]); 
         ta.AnswerText = string.Empty; 
         ta.AnswerTextPending = Request.Form[x]; 
         ta.DateAdded = DateTime.Now; 
         ta.TopicQuestionID = qID; 
         ta.TopicAnalysisID = 0; 
         string swta = cbanc.core.Utility.SerializeObject<TopicAnswer>(ta); 
         tan.TopicAnswers[i] = swta; 
        } 
       } 
      } 
      //thisSessionC.BO.AddAnalysis(tan); 
      XmlData.Append(thisSessionC.BO.GetTopicAnalysis((int)Session["AdminUserID"]).GetXml()); 
     } 
: 여기
<root> 
    <BaseInfo> 
     <QueryData> 
      <m>EditAnalysis</m> 
      <aid>124</aid> 
      <t>none</t> 
     </QueryData> 
    </BaseInfo> 
    <PageName>Topics</PageName> 
    <TopicAnalysisbyTopicAnalysisID> 
     <TopicID>6</TopicID> 
     <TopicName>Privacy</TopicName> 
     <TopicDescription>Testing this out...</TopicDescription> 
     <topicanalysistextpendingcount>27</topicanalysistextpendingcount> 
     <answertextpendingcount>36</answertextpendingcount> 
     <TopicAnalysisID>124</TopicAnalysisID> 
     <TopicAnalysisText /> 
     <TopicAnalysisTextPending>asdasdasdasdasdasdasdasdasd</TopicAnalysisTextPending> 
     <AdminUserID>4</AdminUserID> 
     <TopicQuestionID>4</TopicQuestionID> 
     <TopicQuestionText>How can you best compete with your competitors?</TopicQuestionText> 
     <TopicAnswerID>71</TopicAnswerID> 
     <AnswerTextPending>asdasdasdasdasdasdasdasdasdasdasdasd</AnswerTextPending> 
     <AnswerText /> 
    </TopicAnalysisbyTopicAnalysisID> 
    <TopicAnalysisbyTopicAnalysisID> 
     <TopicID>6</TopicID> 
     <TopicName>Privacy</TopicName> 
     <TopicDescription>Testing this out...</TopicDescription> 
     <topicanalysistextpendingcount>27</topicanalysistextpendingcount> 
     <answertextpendingcount>42</answertextpendingcount> 
     <TopicAnalysisID>124</TopicAnalysisID> 
     <TopicAnalysisText /> 
     <TopicAnalysisTextPending>asdasdasdasdasdasdasdasdasd</TopicAnalysisTextPending> 
     <AdminUserID>4</AdminUserID> 
     <TopicQuestionID>3</TopicQuestionID> 
     <TopicQuestionText>How do you forsee this topic impacting your 
      financial institution in the next year?</TopicQuestionText> 
     <TopicAnswerID>72</TopicAnswerID> 
     <AnswerTextPending>asdasdasdasdasdasdasdasdasdasdasdasdasdasd</AnswerTextPending> 
     <AnswerText /> 
    </TopicAnalysisbyTopicAnalysisID> 
    <Topics> 
     <TopicID>1</TopicID> 
     <IsHotTopic>true</IsHotTopic> 
     <IsActive>true</IsActive> 
     <TopicName>Remote Deposit</TopicName> 
     <TopicDescription>A wave of banks has adopted RDC, and others consider 
      it every day. Has it been profitably for your bank? What best 
      practices have you learned? Which vendors are the best? Is Consumer 
      RDC on your agenda? Share your RDC content, articles, and more.</TopicDescription> 
    </Topics> 
    <Topics> 
     <TopicID>6</TopicID> 
     <IsHotTopic>false</IsHotTopic> 
     <IsActive>false</IsActive> 
     <TopicName>Privacy</TopicName> 
     <TopicDescription>Testing this out...</TopicDescription> 
    </Topics> 
    <Topics> 
     <TopicID>5</TopicID> 
     <IsHotTopic>false</IsHotTopic> 
     <IsActive>false</IsActive> 
     <TopicName>BSA/AML</TopicName> 
     <TopicDescription>Testing this out...</TopicDescription> 
    </Topics> 
    <Topics> 
     <TopicID>3</TopicID> 
     <IsHotTopic>false</IsHotTopic> 
     <IsActive>false</IsActive> 
     <TopicName>Reg E ODP</TopicName> 
     <TopicDescription>The forced opt-out and opt-back-in for ODP is around 
      the corner. Many banks will lose significant revenue, even if they 
      implement a plan. What are your peers doing to soften the blow? What 
      vendors have emerged to help solve this problem? How much revenue can 
      you expect to save? Share your Reg E experiences, and learn what your 
      peers are doing.</TopicDescription> 
    </Topics> 
    <Topics> 
     <TopicID>2</TopicID> 
     <IsHotTopic>false</IsHotTopic> 
     <IsActive>false</IsActive> 
     <TopicName>Social Media</TopicName> 
     <TopicDescription>Unless you don&#39;t have a radio, TV, computer or 
      any friends, you cannot avoid the exaggerated hype about &quot;social 
      media&quot; and community banks. Should a bank embrace it or block 
      it? Is it all sizzle and no steak? What resources are required to 
      make it work? What are the risks? What are the gains? Share your 
      perspective and learn from what your peers and consultants think.</TopicDescription> 
    </Topics> 
</root> 

는 C 날카로운 코드입니다 : 여기
<xsl:when test="/root/BaseInfo/QueryData/m = 'EditAnalysis'"> 
    <form action="topics.aspx?m=SaveExistingAnalysis" name="UpdateAnalysis" 
     enctype="multipart/form-data" method="post"> 
     <input type="hidden" id="hiTopicID" name="hiTopicID" 
      value="{/root/BaseInfo/QueryData/TopicID}" /> 
     <input type="hidden" id="hiTopicAnalysisID" name="hiTopicAnalysisID" 
      value="{/root/TopicAnalysisbyTopicAnalysisID/TopicAnalysisID}" /> 
     <xsl:value-of select="/root/TopicAnalysisbyTopicAnalysisID/TopicName" /> 
    </strong> 
     <xsl:value-of select="/root/TopicAnalysisbyTopicAnalysisID/TopicDescription" /> 
     <xsl:value-of 
      select="/root/TopicAnalysisbyTopicAnalysisID/TopicAnalysisTextPending" /> 
     <xsl:for-each select="/root/TopicAnalysisbyTopicAnalysisID"> 
      <xsl:variable name="TOPIC_ANSWER_ID" select="TopicAnswerID" /> 
      <xsl:value-of select="TopicQuestionText" /> 
      <input type="hidden" id="hiTopicAnswerID" name="hiTopicAnswerID" 
       value="{TopicAnswerID}" /> 
      <xsl:value-of select="AnswerTextPending" /> 
     </xsl:for-each> 
    </form> 
</xsl:when> 

는 XML 데이터입니다 : 각 여기 TopicAnalysisbyTopicAnalysisID 내 XSLT 코드에 대해 나는 TopicAnswerID 얻을 수 있도록하려면
+0

무엇이 당신의 질문은 무엇입니까? –

+0

흠, 우리는 이것보다 더 많은 정보가 필요합니다. XML을 입력하는 데있어 무엇이 포함되어 있으며, 임베디드 HTML을 최소한으로 줄여서 해결하고자하는 것을 더 명확하게 볼 수 있습니까? – AlexanderJohannesen

+0

내가 추가 할 수있는 것이 있으면 알려주세요. TopicAnalysisbyTopicAnalysisID 태그 안에 중첩 된 레코드를 가져올 수 있어야합니다. 특히 C 코드에서 TopicAnswerID. –

답변

0

약간의 작업을 수행하기가 어려우며 게시 된 코드에 몇 가지 문제가 있습니다. 가장 중요한 것은 처리의 성격이며, 모두 하나의 큰 루트 섹션에있는 것처럼 보입니다. 종종 항목을 반복하는 경우에는 요소를 샅샅이 뒤지고 요소의 컨텍스트를 선택하고 그 값을 다른 곳에서 찾는 변수를 만드는 등의 작업을 수행합니다. 그러나, 나는이 식별자가 무엇이고 해야할지 이해하는 데 어려움을 겪고 있습니다. 예를 들어, 당신은 가지고 있습니다;

<input type="hidden" id="hiTopicID" name="hiTopicID" 
      value="{/root/BaseInfo/QueryData/TopicID}" /> 

그러나 경로 '/ 루트/BaseInfo/QueryData/한 TopicID'하지 확신 찾는 무엇을하지 무엇을, 당신의 XML 입력 파일에 존재한다.

그러나 내가 겪고있는 것으로 의심되는 것은 다음과 같습니다.

<!-- First, just a simple variable as a shortcut for a long path --> 
<xsl:variable name="lut" select="/root/BaseInfo/QueryData/TopicID" /> 

<!-- Then, use it for finding a section with a sub-element of that value --> 
<xsl:value-of select="/root/TopicAnalysisbyTopicAnalysisID[TopicID=$lut]/TopicDescription" /> 

나는 여전히 불분명 생각 (당신이 후있어 무엇 이건 TopicDescription 교체), 그리고 당신이 XML 데이터와 당신을 원조하지 않는 XSLT 코드의 컨텍스트를 설정 한 방법 의심 이것에 대해 최선의 방법을 이해하는 것. Using ...는 흐름이 잘 작동하고 지나치게 복잡한 입력 XML에서 허덕이는 일이 없도록하는 가장 좋은 방법입니다.

건배. :)

관련 문제