给出了以下XML代码段:
<TypeB id="FD2020Q1YTD">
<identifier>num1</identifier>
</TypeB>
<TypeA ref="FD2020Q1YTD">num1</TypeA>
<TypeA ref="FD2020Q1YTD_dei_LegalEntityAxis_pnw_ArizonaPublicServiceCompanyMember">num2</TypeA>
如何使用XPath查询以下内容: 我要选择所有“ TypeA”元素,其中元素的ref属性指向这样一个节点,其中增强器的内部文本与TypeA的内部文本匹配。
“ TypeA”中的“ num1”应与“ TypeB /标识符”中的“ num1”相匹配
更新:
wp78de的建议似乎是最好的:
//TypeA[.=//TypeB/identifier and @ref=//TypeB/@id]
但是在这种情况下,如何确定第一个条件:.=//TypeB/identifier
引用相同的TypeB实例,作为第二个条件:@ref=//TypeB/@id
答案 0 :(得分:1)
我不确定我是否正确理解你,但是我相信你正在寻找类似的东西:
#include <iostream>
#include <thread>
#include <SDL2/SDL.h>
#undef main
#include <glad/glad.h>
void RenderThread(bool& running, SDL_Window* window) {
SDL_GLContext context = SDL_GL_CreateContext(window);
SDL_GL_MakeCurrent(window, context);
gladLoadGL();
int r = 0;
while (running) {
uint64_t startTime = SDL_GetPerformanceCounter();
glClearColor(r / 255.0f, 0, 0, 1);
r = (r + 1) % 256;
glClear(GL_COLOR_BUFFER_BIT);
SDL_GL_SwapWindow(window);
double deltaTime = (SDL_GetPerformanceCounter() - startTime) / (double)SDL_GetPerformanceFrequency();
std::cout << 1.0 / deltaTime << " fps" << std::endl;
}
SDL_GL_DeleteContext(context);
}
int main() {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* w1 = SDL_CreateWindow("w1", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL);
SDL_Window* w2 = SDL_CreateWindow("w2", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 700, 700, SDL_WINDOW_OPENGL);
bool running = true, r1 = true, r2 = true;
std::thread t1(RenderThread, std::ref(r1), w1);
std::thread t2(RenderThread, std::ref(r2), w2);
while (running) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
running = false;
r1 = false;
t1.join();
} else if (event.type == SDL_WINDOWEVENT) {
if (event.window.event == SDL_WINDOWEVENT_CLOSE) {
r2 = false;
t2.join();
SDL_DestroyWindow(w2);
}
}
}
}
SDL_DestroyWindow(w1);
SDL_Quit();
return 0;
}
输出应为:
//TypeA[text()=//TypeB/identifier/text()]
答案 1 :(得分:1)
使用XPath 2.0的解决方案:
for $a in //TypeA, $b in //TypeB
return if ($b/@id=$a/@ref and $a/text()=$b/identifier/text()) then $a else ()
不要认为XPath 1.0可以解决。
答案 2 :(得分:1)