학교용 프로젝트를 진행 중입니다. 이 프로젝트는 내가 XML의 다양한 처리 기술을 사용할 수 있음을 보여줄 것을 요청합니다. 이제는 내 프로젝트에서 사용자 기록을 유지하는 Sedna 데이터베이스 관리자와 작업하며 XQuery를 통해 이러한 사용자 레코드 중 일부를 업데이트하고 싶습니다. (저는 PHP API를 사용하여 PHP API를 통해 데이터베이스에 쿼리를 보냅니다. Sedna 개발자 팀). 나는 사용자 레코드에 대한 다음과 같은 데이터베이스의 내용이 상상 : 내 의도는 여기 지금XQuery Update Sedna에서 바꾸기
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="admin" admin="true">
<email>[email protected]</email>
<password>123456789</password>
<firstname>The</firstname>
<lastname>Stig</lastname>
<gender>male</gender>
<subscriptions>
</subscriptions>
</user>
<user id="prosper" admin="false">
<email>[email protected]</email>
<password>123456789</password>
<firstname>Strange</firstname>
<lastname>Figure</lastname>
<gender>male</gender>
<subscriptions>
</subscriptions>
</user>
</users>
하는 것은, 예를 들어, 업데이트의 userrecord 번영하는 것입니다. 이 기록에서 저는 예를 들면, 그의 성명과 이메일을 바꾸고 싶지만, 나머지는 그대로 유지하고 싶습니다. 다음 쿼리를 사용하려고했지만 쿼리를 보낸 후 사용자 레코드의 특성 노드를 자식 노드로 삽입한다고 생각하는 이유 때문에 userrecord의 문서 순서가 변경됩니다. 이 내가 사용자 업데이트하는 데 사용하는 쿼리입니다 : 이제
UPDATE replace $user in doc("users")//user[@id="prosper"]
with
<user>{($user/@*)}
<email>[email protected]</email>
{($user/node()[password])}
<firstname>Familiar</firstname>
<lastname>Figure</lastname>
<gender>male</gender>
{($user/node()[subscriptions])}</user>
을,이 쿼리가, 나에게주는 문제는 업데이트 후 사용자의 정보를 요청하려고 할 때, 나는 아이의 순서에 의존한다는 것입니다 노드는 업데이트 전에 있었지만이 쿼리는 순서를 변경합니다.
이 문제를 해결할만큼 숙련 된 전문가가 있습니까?
시간 내 주셔서 감사합니다.
J 귀하의 예제가 작동합니다 (교체 후 사용자 요소 간 문서 순서가 보존 됨). Sedna 3.4.66. 문제를 재현 할 수있는 다른 세부 정보를 제공 할 수 있습니까? – Shcheklein
안녕하세요. 사용자 레코드 간의 문서 순서는 실제로 유지되지만 문제는 업데이트 된 userrecord 내에 있습니다. PHP 스크립트로 사용자의 정보를 입력 할 수있는 양식이 있습니다. 사용자는이 정보를 업데이트하고 저장할 수 있습니다. 그러나 업데이트 후에 동일한 양식을 표시 할 때 사용자의 정보가 올바르게 표시되지 않습니다. 업데이트가 수행 된 후 첫 번째 이름이 있어야하는 텍스트 영역에서 성이 채워지고 성이 있어야하는 텍스트 영역에 성별이 입력됩니다. 그래서 userrecord 내부의 내용이 변경되어 볼 수 없습니다. 왜. –
1 월, 내 대답을 참조하십시오. 어쨌든, 필드와 값을 어떻게 바인딩합니까? – Shcheklein